[視頻編碼] ffmpeg在macOS上使用GPU編碼
2020年12月08日更新:macOS Big Sur下面的hevc_videotoolbox和h264_videotoolbox好像出現(xiàn)了億點點小問題,現(xiàn)在它們也不會調(diào)用GPU進行工作了。而更詭異的是在其他參數(shù)完全一樣的情況下,h264_videotoolbox壓出來的視頻大小是hevc_videotoolbox的三分之一左右,而且速度也可以接受。因此基于目前的情況建議使用h264_videotoolbox進行工作(這個參數(shù)可以比無參數(shù)默認使用libx264的編碼速度快5-6倍,而且CPU占用遠低于libx264)。
只想抄參數(shù):-vcodec h264_videotoolbox?
或使用H265編碼:-vcodec hevc_videotoolbox?
ffmpeg目前是一個非常流行的視頻編解碼器(去官網(wǎng)的hall of shame上看一看甚至能看到不少熟悉的國產(chǎn)播放器的身影)。但是默認配置的ffmpeg最大的問題就是只能使用CPU進行編解碼操作,白白浪費GPU的算力。

之前我搜索過macOS有沒有辦法調(diào)用GPU,當時找到的是使用-hwaccel參數(shù)。實測效果并不理想,只調(diào)用了2%-5%的GPU,效果幾乎跟沒有一樣。
由于前段時間主板灰飛煙滅換了塊主板,因此重新找了找網(wǎng)上的帖子,這次找到了更高效的參數(shù):-vcodec h264_videotoolbox。
這里的h264_videotoolbox設(shè)置的是輸出H.264編碼的視頻,如果需要輸出H.265編碼,可以改成hevc_videotoolbox。
Videotoolbox是蘋果提供的一個框架,可以提供直接接觸硬件編解碼器的途徑(https://developer.apple.com/documentation/videotoolbox)。從2015年開始ffmpeg開始整合進對Videotoolbox框架的支持。但是那時候窮買不起mac

在實際測試過程中,對于硬編碼字幕的操作,使用純CPU編碼的平均速度在1.5倍左右,而使用CPU和GPU混合編碼可以把平均速度提高到7.5倍左右。差不多是五倍的提升,你好,我好,風(fēng)扇好。
但即使是這樣也沒辦法做到完全榨干GPU的性能(Iris Plus 645只能占用到30%左右),等以后找到更好的方式了我再發(fā)一篇出來。