日期:2014-05-18  浏览次数:20929 次

AVIStreamGetFrame 问题,不能取指定帧数据!
我调用的步骤是:
AVIFileInit
AVIFileOpen
AVIFileGetStream
AVIStreamGetFrameOpen
AVIStreamGetFrame
....

现在我想直接获取指定帧的数据,比如第10帧,但是获取到的是一片黑色,好像是第1帧的图像。
如果我循环从0开始
for(int i=0; i<11; i++) .... 这样全部帧就出来了。

另外AVIStreamRead好像可以获取到指定的帧数据,但又是压缩过的(我的AVI是h264编码),各位不知道有什么办法解码吗?
我用DrawDib下的 DrawDibDraw 返回true但是没有看到图像。

------解决方案--------------------
原因么大概是压缩时隔一段时间指定一张关键帧,其它的帧就保存的与这张关键帧不同的地方,你要取的那帧如果不正好是关键帧,就无法解析成完整图像,需要与之前最近的那张关键帧组合在一起才行。
------解决方案--------------------
你要是想取某一帧,首先需要对视频做解码操作。单独的对视频做抽帧操作拿到是某一帧的数据,这个数据需要和关键帧做相关的计算才能拿到完整的图像。