ffmpeg硬件加速代码方式

本文中实例测试时机器使用的是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 举报,一经查实,本站将立刻删除。

(0)

相关推荐

发表回复

登录后才能评论