请高手指点下
陆其明吧
全部回复
仅看楼主
level 2
kony2008 楼主
因项目需要,想用dxshow做一个视频处理的程序,需实现以下功能打开一个(一些基本的视频格式的)文件,随即抽取几个帧,进行处理(在RGB位图格式下),处理完毕后,保存成一个新的视频文件。我用mfc开发思路如下:一、得到总帧数(项目需要)。有两种方法,但有时候结果不大一样,不知道该用哪一种? 1 利用IMediaDet::get_FrameRate(&)和IMediaDet::get_StreamLength(&)分别得到帧速率和时间长度,二者相乘得到一个数(一般是小数) 2 利用IMediaSeeking::SetTimeFormate(&TIME_FORMAT_FRAME)改变seek模式,然后用IMediaSeeking::GetDuration(&)得到总帧数。 我发现用2得到的一般是1得到数的上限整数,但对有的avi文件二者相差几个值(比如二者相差3)二、抓帧处理 1、IMediaDet::getBitMapBits(时间参数),抓帧并对该帧处理。 2、可以用IMediaSeeking来实现吗。三、最重要的问题 我该如何将处理后的帧重新编码为原来视频格式并“塞回”到原来视频的位置。谢谢。能不能不用自己编写filter
2006年06月22日 08点06分 1
level 7
一用1比较好一点。用2可能不准,因为IMediaSeeking::SetTimeFormate(&TIME_FORMAT_FRAME)可能会不支持!二IMediaSeeking不能实现抓帧三实现这个功能,一般你要自己写filter。要将原来的文件解码,抓帧处理后重新编码。
2006年06月25日 08点06分 2
level 2
kony2008 楼主
非常感谢陆哥指点~~谢谢
2006年06月25日 12点06分 3
1