各位大侠,想请教一下ffmpeg是否支持dxva2硬解?

highgod 发布于 2012/06/03 09:46
阅读 6K+
收藏 0
各位大侠,我在mingw下编译了ffmpeg,而且enable了dxva2,编译通过后,调用ffmpeg,输入视频为1920x1080大小的mpeg2视频文件,但是解码没有走硬解,ff_find_hwaccel函数找硬解解码器的时候失败,我加打印,发现codec_id已经找到,但是像素格式不对(ff_find_hwaccel hwaccel = 0xb0ac80,hwaccel->id = 2,codec_id = 2,hwaccel->pix_fmt = 61,pix_fmt = 0,),继续跟踪获得像素格式的函数avcodec_default_get_format,发现对于像素格式属性是硬解的(PIX_FMT_HWACCEL),都没有取,而是跳到下一个直到没有硬解属性的才返回。所以根本走不到硬解功能,好像dxva2硬解根本没有用。所以想请教一下ffmpeg如果想实现硬解功能,是否还要自己另加代码才能实现?谢谢。
加载中
0
l
laosong
mpeg2一般不走硬解吧,必要性不大,主要还是得看你的显卡是否支持。
0
highgod
highgod

您好,显卡是支持的,别的软件可以看到走硬解。现在就是想知道ffmpeg是否实现了硬解,以及怎么使用,我也尝试结果h264的硬解,但是效果和mpeg2一样,都是像素格式不一样导致硬解找不到。您如果测试过,能否给个测试硬解的例子?谢谢。

0
l
laosong
抱歉,没有自己动手测试过mpeg2. ffmpeg的硬解应该是尝试性的,功能可能不完整,很多使用ffmpeg的解码器都是自己实现硬解的,而使用ffmpeg来软解,如果你要研究硬解,可以参考mpc-hc的VideoDeocoder,它就是基于DXVA2的,使用DXVA2需要Video Render的支持。
0
浪客Dandy
浪客Dandy

我比较确信的是vlc支持dxva2

但是DirectShow模式下的dxva2只是为了向下兼容,用的其实还是dxva(1)

你必须到了MediaFoundation才能完全利用到dxva2和dxva HD

 

0
highgod
highgod

好的,谢谢各位大侠。

0
highgod
highgod

自己尝试按照vlc代码实现,已经实现了硬解,确实如laosong所说,需要自己添加代码,初始化context才能实现硬解。感谢大家帮助。

ke_code
ke_code
我用了你的代码 怎么解码效率反而变低了? 效率变低很多
0
l
laosong

引用来自“highgod”的答案

自己尝试按照vlc代码实现,已经实现了硬解,确实如laosong所说,需要自己添加代码,初始化context才能实现硬解。感谢大家帮助。

恭喜,共享下代码呗
0
highgod
highgod

邮箱提供以下吧,呵呵,我的也是在网上抄的

0
g
ginger

我也在尝试硬解,楼主共享下代码,gingeryear@gmail.com

非常感谢!

0
highgod
highgod
已经发过去了
返回顶部
顶部