我无法使用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中分配的回调,并且对于所有H.264视频,仅返回HEVC视频的AV_PIX_FMT_YUV420P而不是AV_PIX_FMT_DXVA2_VLD。所以硬件解码不起作用。
HEVC的软件解码没有问题。
MPC-HC使用DXVA2播放精细的HEVC视频(CPU负载较低,任务管理器显示GPU细节中的视频解码器工作)。我的显卡是Geforce 1060。
答案 0 :(得分:0)
我通过添加功能来解决这个问题:
enum AVPixelFormat get_hw_format(AVCodecContext *ctx,
const enum AVPixelFormat *pix_fmts)
{
return AV_PIX_FMT_DXVA2_VLD;
}
指定上述功能的地址 pCodecContext-> get_format = get_hw_format;