代码之家  ›  专栏  ›  技术社区  ›  Paul Belanger

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

  •  1
  • Paul Belanger  · 技术社区  · 6 年前

    我有一个使用ffmpeg解码视频流的项目,我想在可用的情况下利用硬件解码。根据 this answer 的使用 ff_find_hwaccel 在新的ffmpeg版本中,朋友是不受欢迎的。

    答案表明 法夫芬德哈瓦塞尔 被贬低。我想知道分配硬件加速解码器的新方法是如何工作的。是自动完成的吗?我可以通过吗? hwaccel 在AVDictionary中作为第三个选项 avcodec_open2 还是我必须做一些更复杂的事情?

    当前用于分配 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 .

    1 回复  |  直到 6 年前
        1
  •  1
  •   MadMarky    6 年前

    在当前版本的ffmpeg硬件中,如果可用,则自动支持加速。这也是为什么 ff_find_hwaccel 被贬低。

    根据使用的平台和视频编解码器的不同,您可能或可能不支持视频解码的硬件加速。例如,NVIDIA图形卡在一段时间内一直支持H264视频的硬件加速解码,但HEVC解码需要一个图形卡,即 a fair bit newer . 对于AMD图形卡来说,情况是一样的,除了你通常会使用上面提到的dxva2解码器。 here .

    简而言之:如果您的平台支持硬件加速,那么它应该由ffmpeg自动使用。你也可以通过 forcing a decoder .