无法使用DXVA2和ffmpeg解码HEVC视频

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法使用DXVA2和ffmpeg解码HEVC视频相关的知识,希望对你有一定的参考价值。

我无法使用DXVA2硬件加速来使用ffmpeg解码HEVC视频。适用于H.264的DXVA2工作正常。

我从ffmpeg源代码编译了一个官方示例hw_decode.c:

https://github.com/FFmpeg/FFmpeg/blob/master/doc/examples/hw_decode.c

当我调用av_send_packet()时,它执行在AVCodecContext-> get_format中分配的回调,并且仅为HEVC视频返回AV_PIX_FMT_YUV420P,而不是为所有H.264视频返回AV_PIX_FMT_DXVA2_VLD。所以硬件解码不起作用。

HEVC的软件解码没有问题。

MPC-HC使用DXVA2播放精细的HEVC视频(CPU负载较低,任务管理器显示GPU详细信息中视频解码器的工作)。我的显卡是Geforce 1060。

答案

我通过添加功能来解决这个问题:

  enum AVPixelFormat get_hw_format(AVCodecContext *ctx,
    const enum AVPixelFormat *pix_fmts)
   {
    return AV_PIX_FMT_DXVA2_VLD;
   }

上述函数的分配地址pCodecContext-> get_format = get_hw_format;

以上是关于无法使用DXVA2和ffmpeg解码HEVC视频的主要内容,如果未能解决你的问题,请参考以下文章

基于FFmpeg的Dxva2硬解码及Direct3D显示

基于FFmpeg的Dxva2硬解码及Direct3D显示

Qt之dxva2硬解码

dxva2 硬件解码器支持哪些 h264 配置文件

DXVA2解码数据用texture纹理渲染

使用 DX11 和 DXVA2