看不下去了 给个方法吧
利用DirectShow 播出文件
1) 做一个接口对象实现 ISampleGrabber 接口(DirectShow标准接口)
2) 在IGraphBuilder里直接RenderFile
3) 通过遍历找到 Graph 里的 IVideoWindow Filter和VideoWindow前连接的Filter
4) 断开VideoWindow的pin连接
5) 在中间插入你实现的 ISampleGrabber 并恢复连接
6) 设置IVideoWindow不可见
7) IMediaControl.Run 播放
你需要在ISampleGrabber里实现什么呢?
1) 实现 ISampleGrabberCB 接口
2) 实现 SampleCB 回调函数
这样 当视频开始解码时,每一帧都会调用这个回调函数
参数是一个 IMediaSample
3) 通过IMediaSample得到视频格式和视频具体数据
这时你就可以把数据拷贝出来做任意的处理
4)把处理的完的结果自己送去显示(GDI,DirectX,OpenGL)均可
做以上的的步骤需要学习DirectShow
就这些了,那些要钱的 ,保密的一边凉快去吧