我不能使用DXVA2硬件加速来解码ffmpeg视频。适用于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。所以HW解码不起作用。
HEVC的软件解码工作没有问题。
使用DXVA2播放优秀的HEVC视频(CPU负载低,任务管理器在图形处理器细节中显示视频解码器的工作)。我的显卡是Geforce 1060。
发布于 2018-05-10 17:14:31
我已经通过添加函数修复了这个问题:
enum AVPixelFormat get_hw_format(AVCodecContext *ctx,
const enum AVPixelFormat *pix_fmts)
{
return AV_PIX_FMT_DXVA2_VLD;
}上述函数pCodecContext的分配地址->get_format= get_hw_format;
https://stackoverflow.com/questions/49585967
复制相似问题