FFmpeg--使用硬件加速进行视频解码

3
我有一个项目需要使用FFmpeg解码视频流,并想利用硬件解码。根据这个答案所述,在新的FFmpeg版本中,ff_find_hwaccel等函数已经废弃。
该答案指出了ff_find_hwaccel已经被废弃。我想了解分配硬件加速解码器的新方法是如何工作的。它是否自动完成?我是否可以将hwaccel作为第三个选项传递给avcodec_open2中的AvDictionary?还是我需要做更多的操作?
目前分配AVCodecContext的代码如下:
auto video_codec = avcodec_find_decoder(codec_id);
auto context = avcodec_alloc_context3(video_codec);
auto retcode = avcodec_open2(context, video_codec, nullptr);

当然要进行错误检查。 然后,我使用avcodec_decode_video2将AVPackets推入解码器。

哪个平台和操作系统?硬件加速取决于平台。 - Thomas Matthews
该项目主要在 Windows x64 上运行。 - Paul Belanger
你不觉得只需要分配编解码器上下文,如果失败了就回退到 CPU 上吗? - Harry
1个回答

2

在当前版本的FFMPEG中,如果可用,将自动支持硬件加速。这也是为什么ff_find_hwaccel已经过时的原因。

根据平台和视频编解码器使用情况,您可能具有或不具有视频解码的硬件加速支持。例如,使用H264_NVDEC解码器很长一段时间以来一直支持在Nvidia图形卡上对H264视频进行硬件加速解码,但HEVC解码需要一个相当新的图形卡。这里可以查看支持的GPU矩阵。对于AMD图形卡,情况也差不多,只是您通常会使用DXVA2解码器,在这里提到了它。

简而言之:如果您的平台支持硬件加速,则FFMPEG应该自动使用它。您还可以通过强制解码器进行其他测试。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接