前言
因为某些原因需要在Windows上进行大量的视频合并操作,最终选择了ffmpeg进行。ffmpeg的二进制是在官网上下载的。
初步尝试
最开始直接使用默认的编解码器:ffmpeg -i xx -i xx xx
,结果发现ffmpeg根本就不调用GPU,纯用CPU进行软解,导致速度慢的出奇。因此想办法调用GPU进行硬解
调用硬解码器
百度后得到参数 -hwaccels dxva2
,这样可以调用D3D进行硬解码,对于Windows平台应该是很合适的。
调用硬编码器
这里要注意参数所处的位置。在输出文件名前面加上 -c:v h264_amf
即可调用GPU进行硬编码,如果GPU支持,也可把h264换成hevc等,注意不能写成 -c h264_amf
,因为只有图像流能够硬编码,音频流仍然得软编码。
总结
最终调用形式如下:ffmpeg -hwaccels dxva2 -i xx -i xx -c:v h264_amf xx
。结果非常好,GPU虽然无法满载,但利用率相当好,同时速度也快了不少。