AVIStreamGetFrame 问题,不能取指定帧数据!

里沃特 2012-05-30 10:03:29
我调用的步骤是:
AVIFileInit
AVIFileOpen
AVIFileGetStream
AVIStreamGetFrameOpen
AVIStreamGetFrame
....

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

另外AVIStreamRead好像可以获取到指定的帧数据,但又是压缩过的(我的AVI是h264编码),各位不知道有什么办法解码吗?
我用DrawDib下的 DrawDibDraw 返回true但是没有看到图像。
...全文
108 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
二泉映月 2014-02-27
  • 打赏
  • 举报
回复
AVIStreamGetFrame(pFrame, index);就算变换index,只能读取到第一帧数据,我也出现这个情况了,楼主解决了吗?
里沃特 2012-05-30
  • 打赏
  • 举报
回复
而且最关键的是,我循环获取的话都可以出来。
里沃特 2012-05-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

原因么大概是压缩时隔一段时间指定一张关键帧,其它的帧就保存的与这张关键帧不同的地方,你要取的那帧如果不正好是关键帧,就无法解析成完整图像,需要与之前最近的那张关键帧组合在一起才行。
[/Quote]
[Quote=引用 2 楼 的回复:]

你要是想取某一帧,首先需要对视频做解码操作。单独的对视频做抽帧操作拿到是某一帧的数据,这个数据需要和关键帧做相关的计算才能拿到完整的图像。
[/Quote]

谢谢啊,可是怎么才知道是关键帧呢?
又要怎么处理呢?
绝代坏坏 2012-05-30
  • 打赏
  • 举报
回复
你要是想取某一帧,首先需要对视频做解码操作。单独的对视频做抽帧操作拿到是某一帧的数据,这个数据需要和关键帧做相关的计算才能拿到完整的图像。
__天涯寻梦 2012-05-30
  • 打赏
  • 举报
回复
原因么大概是压缩时隔一段时间指定一张关键帧,其它的帧就保存的与这张关键帧不同的地方,你要取的那帧如果不正好是关键帧,就无法解析成完整图像,需要与之前最近的那张关键帧组合在一起才行。
里沃特 2012-05-30
  • 打赏
  • 举报
回复
100分也没人来?还是分少了?还是没人会呀?还是高手不出来呀。。

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧