如果您的CPU支持例如英特尔快速同步,则可以使用硬件加速显著减少CPU负载(在我的测试案例中,使用libx264时为90%,使用h264_qsv时为20%)。启用硬件加速解码后,将CPU负载从20%降至4%。因此,总结一下,从90%到4%。但负载还取决于其他事情,如比特率,分辨率和CPU /硬件。
编码
首先,您需要知道在您的FFmpeg版本中已启用了哪些编码器。要检查这一点,只需执行:
ffmpeg -codecs
在这个地方,您应该找到您的目标编解码器(h264):
[...]
DEV.LS h264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (decoders: h264 h264_qsv h264_cuvid ) (encoders: libx264 libx264rgb h264_amf h264_mf h264_nvenc h264_qsv )
[...]
请注意“编码器”。有些是软件编码器,有些是硬件编码器。此列表取决于您的操作系统和在FFmpeg编译期间启用的编码器。要获取每个编码器的简短描述,您可以执行以下操作:
ffmpeg -encoders
[...]
V....D libx264 libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (codec h264)
V....D libx264rgb libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 RGB (codec h264)
V....D h264_amf AMD AMF H.264 Encoder (codec h264)
V....D h264_mf H264 via MediaFoundation (codec h264)
V....D h264_nvenc NVIDIA NVENC H.264 encoder (codec h264)
V..... h264_qsv H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (Intel Quick Sync Video acceleration) (codec h264)
[...]
注意:并非所有的编码器都能正常工作。例如,如果您没有NVIDIA显卡,则h264_nvenc将无法工作。
在我的Windows机器上,我将选择"h264_qsv"(英特尔Quick Sync视频加速)编码器。在macOS上,您需要使用"h264_videotoolbox"。
ffmpeg -i mysource -c:v h264_qsv -c:a copy output.mp4
请注意输出质量:libx264 可能比硬件加速编码器默认具有更好的质量。因此,请确保使用定义的比特率进行编码优化(例如 -b:v 6M 表示 6 兆比特)。
这将使用英特尔 Quick Sync 的 h264 编码器对输入进行编码(因为使用了 -c:v 选项)。请在以下链接
https://trac.ffmpeg.org/wiki/HWAccelIntro上找到更多详细信息。
解码
在输入(-i)之前使用选项“-hwaccel auto”尝试使用硬件加速解码。
ffmpeg -hwaccel auto -i mysource .....
如果有硬件解码器可用,则自动使用。否则,FFmpeg将退回到软件解码器。请检查控制台输出以查看发生了什么:
[hevc @ 00000176c91d0fc0] Using auto hwaccel type dxva2 with new default device.
ffmpeg -codecs
的输出显示:DEV.LS h264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (解码器: h264 h264_v4l2m2m h264_qsv ) (编码器: libx264 libx264rgb h264_omx h264_qsv h264_v4l2m2m h264_vaapi )
,转码过程显示:[hevc @ 0x561e69691a00] Using auto hwaccel type vaapi with new default device.
我可以看到有"qsv"、"vaapi"等等。但我十分确定它仍在使用软件解码,因为我的i7-7700T上的ffmpeg CPU使用率约为320%。 - xrfang