本文中实例测试时机器使用的是AMD的CPU,显卡为Amd的集成显卡。
1、查询本机器支持的ffmpeg硬件加速框架命令:
ffmpeg -hwaccels
返回的内容:
cuda
dxva2
qsv
d3d11va
opencl
vulkan
2、使用-hwaccel 分别加步骤1中返回的参数作后缀,例如下行命令所示:
ffmpeg -hwaccel d3d11va -i input.mp4 -b:v 890K -r 23.98 output.mp4
通过测试可以看出使用-hwaccel d3d11va作为参数可以收到10%的gpu加速,其它如-hwaccel cuda、-hwaccel dxva2、-hwaccel qsv、-hwaccel opencl、-hwaccle vulkan都只有1%的gpu加速。同时CPU的占用都高达90%。
3、查看机器支持的编解码器。
通过如下命令查看本机器所支持的关键词为h264的编解码器:
ffmpeg -codecs | findstr "h264"
Linux和Mac设备使用下面的命令代替:
ffmpeg -codecs | grep "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 )
从上面返回的内容可知,本机器支持的有关h264的decoders(解码器)有以下三种:
h264
h264_qsv
h264_cuvid
本机器支持的有关h264的encoders(编码器)有以下六种:
libx264
libx264rgb
h264_amf
h264_mf
h264_nvenc
h264_qsv
decoders(解码器,对应input文件的解码)
encoders (编码器,对应output文件的编码)。
decoders 中 h264_qsv 是 Intel 核显/显卡专用的硬件加速解码器,h264_cuvid 是 Nvidia 显卡专用的解码器。
encoders 中 h264_amf 和 h264_mf 都是Amd卡专用的编码器,h264_qsv 对应 Intel 显卡的专用编码器,h264_nvenc 对应 Nvidia显卡的专用编码器。
本机器是Amd的集成显卡,那么编码器参数应当选择h264_amf 和 h264_mf 。
4、分别运行命令,并查看机器的硬件占用情况,以选择编码器参数:
ffmpeg -c:v h264 -i input.mp4 -b:v 800K -c:v h264_amf output.mp4
上述命令中编码器参数为-c:v h264_amf,说明编码器选择了h264_amf。此命令运行时amd的GPU会有40%的参与运算,同时,CPU的占用会降低到40%。
ffmpeg -c:v h264 -i input.mp4 -b:v 800K -c:v h264_mf output.mp4
上述命令中编码器参数为-c:v h264_mf,说明编码器选择了h264_mf。此命令运行中没有看到GPU参与运算,而且CPU的占用非常高。
因此,本机器的编码器参数应当选择h264_amf。
5、命令中显示地说明加速框架和编码器参数
硬件加速需指定加速框架为-hwaccel d3d11va,同时编码器需指定为-c:v h264_amf。这样运行速度的可达10X,同时CPU占用最高才到20%,GPU的占用最高为15%。
参考命令如下:
ffmpeg -hwaccel d3d11va -i input.mp4 -b:v 800K -c:v h264_amf output.mp4
作者:Fista
版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。