2012-02-02 64 views
1

这可能是一个愚蠢的问题,但我很难概念化我在这里需要做的事情......在过去,我使用DirectShow连接到一个摄像头,并使用源过滤器,AVI多路复用器,压缩过滤器,运行图等等来捕获AVI ...小菜一碟。 在这种特殊情况下,当我的非DirectShow相机驱动程序准备好缓冲区时,我会收到通知。我收到通知,然后我去抓取BYTE *并使用GDI进行渲染。我现在也需要用这些缓冲区创建一个AVI。 从概念上来说,我使用vfw之类的东西并在每次接收缓冲区时写入AVI流中都是有意义的,当然vfw是旧技术,而且我也有一些问题需要解决(正如我在其他论坛中发布的那样) )。 如何将这些缓冲区放入DirectShow AVI Mux并写入文件?我是否必须创建自己的源过滤器来接收这些缓冲区,然后将我的源过滤器和avi多路复用器添加到过滤器图形中? 感谢您的任何提示使用DirectShow从非DirectShow源捕获到AVI

回答

2

所以你有BYTE*与视频帧数据。这与你所设想的非常接近。您的选择是使用VFW AVIFileOpen和朋友写入AVI文件,或将数据注入DirectShow管道。要做到后者,你通常会制作类似PushSource的过滤器,并从那里推送视频帧(通过AVI Mux到文件编写器)。

+0

谢谢罗马。我将研究创建PushSource过滤器。虽然我认为我更喜欢使用VFW,但看起来工作量较少。我尝试过但VFW有问题,这里描述[创建AVI的问题](http://stackoverflow.com/questions/9106347/avi-created-with-avistreamwrite-has-incorrect-length-and-playback-speed)。我会继续阻止。谢谢! – mash 2012-02-03 14:00:00

+1

如果你的视频已经被压缩了,那么要写入AVI文件,你最好使用'Video for Windows'(毕竟你不需要接触滤波器)。如果你还需要压缩(还有选择合适的压缩器)和/或与音频合并,那么'DirectShow'可能是更好的选择。 – 2012-02-03 14:03:32

+0

是的,我同意你的看法,我正在研究压缩vfw中的视频,看起来如果我需要压缩,使用DirectShow是有意义的。我正在研究这两种方法,以使它们正常工作。如果你对我以前的文章中提到的VFW问题有任何想法,我将不胜感激。否则,非常感谢您的帮助。 – mash 2012-02-03 15:19:06