openCV是否只能打开avi格式视频


如果只是做研究,用AviSynth + K-Lite Code Pack来解决这个问题吧。

K-Lite Code Pack里面包括ffdshow,是一套video codec的组合,它提供
Video For Windows 的接口,OpenCV的这个函数就是用这个接口;

然后用AviSynth这个virtual frame server来包装这个mpeg文件,创建一
个简单的script,比如mobile.avs,里面只有一行:
MpegSource("mobile.mpg")
当然这取决于你的mpeg的文件的压缩方式,也许需要额外的AviSynth的plugin.
装好K-lite Codec和AviSynth之后,你可以先用播放器直接放这个mobile.avs
文件看是否行得通。

视频实际上的读取过程是:
原始视频 -> ffdshow -> AviSynth -> OpenCV -> IplImage

K-lite Codec Pack主页:http://www.codecguide.com/download_kl.htm
AviSynth主页:http://www.avisynth.org/
相关讨论区:http://www.doom9.org/

另外一条路是基于DirectShow filter/sample grabber的办法来读取video frames,
可以看看: http://windowssdk.msdn.microsoft.com/en-us/library/ms787867.aspx
这种方法需要下载DirectX SDK和DirectShow的addon,同时也需要相关codec,
视频的读取过程是:
原始视频 -> codec -> DirectShow(frame grabber) -> Windows Bitmap -> IplImage

如果是只做研究用,推荐第一条;如果是商业用途,得要看license来决定了。 

你可能感兴趣的:(avi,codec,video,windows,server)