首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查ffmpeg硬件加速状态

如何检查ffmpeg硬件加速状态
EN

Stack Overflow用户
提问于 2022-08-02 13:05:22
回答 1查看 2.1K关注 0票数 0

关于使用ffmpeg加速硬件的几个问题(我认为这与this one不同):

  1. 如何判断我的ffmpeg版本是否支持硬件加速,以及它支持哪些加速特性?

从转码过程输出的

  1. ,我能判断ffmpeg是否在使用硬件加速吗?

  1. I使用ffmpeg从摄像机中提取H265视频,并将其转换为H264 HLS块。现在的问题是转码过程过于CPU密集。我希望使用硬件加速。由于应用程序,我不能使用昂贵的GPU,如NVidia cuda平台。如果只使用英特尔高清图形附带CPU,我能大幅降低H265 => H264转码时的CPU使用率吗?以%为单位的估计性能增益是多少?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2022-08-04 15:44:52

如果您的CPU支持,例如Intel,您可以使用硬件加速显着地减少CPU负载(在我下面的测试案例中,使用libx264从90%减少到使用h264_qsv的20% )。在启用硬件加速解码后,CPU负载从20%减少到4%。总之,从90%到4%。但是负载也取决于其他因素,如比特率、分辨率和CPU/硬件。

编码

首先,您需要知道在您的FFmpeg版本中启用了哪些编码器。要检查这一点,只需执行

代码语言:javascript
复制
ffmpeg -codecs

在这种情况下,您应该找到目标编解码器(h264):

代码语言:javascript
复制
[...]
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编译期间,此列表依赖于您的操作系统和已启用的编码器。要获得每个编码器的简短说明,您可以执行:

代码语言:javascript
复制
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“(英特尔快速同步视频加速)编码器。在macOS上,您要使用"h264_videotoolbox":

代码语言:javascript
复制
ffmpeg -i mysource -c:v h264_qsv -c:a copy output.mp4

注意输出质量:默认情况下,libx264可能比硬件加速编码器具有更好的质量。因此,请确保使用定义的比特率(6MBit为-b:v 6M )完成编码。

这使用的h264编码器对输入进行编码(因为-c:v选项)。请查找关于https://trac.ffmpeg.org/wiki/HWAccelIntro的更多细节

解码

在输入(-i)尝试使用硬件加速解码之前,使用“-i自动”选项:

代码语言:javascript
复制
ffmpeg -hwaccel auto -i mysource .....

如果硬件解码器可用,则自动使用。如果没有,那么FFmpeg将返回到软件解码器。检查控制台输出,看看会发生什么:

代码语言:javascript
复制
[hevc @ 00000176c91d0fc0] Using auto hwaccel type dxva2 with new default device.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73208088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档