3
votes

I have a project where I need to record a video using DirectShow from a webcam, but I need to be able to stop recording while the preview continues to run.

I am using WPFMediaKit

http://wpfmediakit.codeplex.com/

The problem is that when I record a video the pause function also pauses the preview pane in the application

I am new to DirectShow, any suggestions how is can address this issue or a solution

Thank you very much.

P.S I use C# & WPF

3
Did you tried creating two graphs? One for preview and the other one for recording? - yms
I am using the WPFMEdiaKit controls I don't know directshow that well so I guess they create one graph in that control - David MZ

3 Answers

3
votes

I don't know about the WPFMediaKit, but basically when you want to start/stop recording while keeping the preview, you will need two graphs, and something to connect between those graphs. Take a look at the pdf document at the GMFBridge page.

3
votes

If you can accept a momentary pause in preview when you start/stop recording and don't want to use something like a 2 graph GMFBridge approach, you can disconnect either the capture pin on the video capture source filter (assuming you are using separate preview and a capture pins from your source filter) or disconnect the File Writer chain portion of your capture sub-graph.

The issue here is the filtergraph must be paused before changes can be made to its topology, so you'd need to:

Pause Graph Disconnect or Reconnect File Writer chain Resume Graph

In my experience the temporary pause is not very noticeable.

0
votes

Please use StreamControl method of ICaptureGraphBuilder2, it provides you to control any filter in your Graph individually.