我有一个需要预览视频摄像头一个DirectShow应用程序,而当用户点击“录音”,它需要开始捕捉视频到一个文件中。Directshow的预览只和捕捉和预览与单个图形
为此我创建单个捕获图形,与连接到连接到AVI_MUX滤波器保存到文件渲染滤波器和捕获销PREVIEW销。
它看起来是这样的:
/[PREVIEW PIN]-->[VIDEO_RENDERER]--->[SCREEN]
[VIDEO CAPTURE FILTER]/
\
\[CAPTURE PIN]--->[AVI_MUX]--->[FILE WRITER]
当我在图表上调用run()的视频显示在屏幕上,并得到正确保存到文件中。
我的问题是,我怎么只能运行图的预览pin部分没有CAPTURE_PIN部分。
我最初的想法是手动启动/停止相应的过滤器,但后来我看了一下微软的DirectShow AMCAP样品,他们实际上创建两个单独的图表。一个用于预览,另一个用于捕获。如果用户想要预览视频,他们会销毁捕获图并创建预览图。如果用户想要录制视频,他们会破坏预览图并创建捕获图。
这似乎有点浪费,尤其是因为单个图形已经包含PREVIEW和CAPTURE引脚。这里有什么正确的方法?
这是什么最后我最终做了。看起来像是浪费。 – Eternal21 2012-08-18 11:59:26