Предварительный просмотр Directshow Only и Capture & Preview с одним графиком

У меня есть приложение Directshow, которое необходимо для предварительного просмотра видео с веб-камеры, и когда пользователь нажимает кнопку «Запись». он должен начать захват видео в файл.

Для этого я создал один Capture Graph, с выводом PREVIEW, подключенным к фильтру RENDER, и выводом CAPTURE, подключенным к фильтру AVI_MUX, который сохраняет в файл.

Это выглядит примерно так:

                        /[PREVIEW PIN]-->[VIDEO_RENDERER]--->[SCREEN]
[VIDEO CAPTURE FILTER] /
                       \
                        \[CAPTURE PIN]--->[AVI_MUX]--->[FILE WRITER]

Когда я вызываю Run () на графике, видео отображается на экране и корректно сохраняется в файл.

У меня вопрос, как я могу запустить только PREVIEW PIN-код на графике без раздела CAPTURE_PIN.

Моя первоначальная идея состояла в том, чтобы вручную запустить / остановить соответствующие фильтры, но затем я посмотрел на образец amcap от Directshow от Microsoft, и они фактически создали два отдельных графика. Один для предварительного просмотра и один для захвата. Если пользователь хочет просмотреть видео, он уничтожает график захвата и создает график предварительного просмотра. И если пользователь хочет записать видео, он уничтожает график предварительного просмотра и создает график захвата.

Это кажется расточительным, тем более что один график уже содержит контакты PREVIEW и CAPTURE. Какой правильный подход здесь?

Ответы на вопрос(2)

Ваш ответ на вопрос