C++ 选择性地';关闭&x27;多个输出引脚流directshow筛选器

C++ 选择性地';关闭&x27;多个输出引脚流directshow筛选器,c++,video-streaming,directshow,video-capture,mpeg-2,C++,Video Streaming,Directshow,Video Capture,Mpeg 2,我相信这个问题以前会被问到,但我已经搜索过了,找不到任何具体的帮助解决方案 我将开始概述最初的关注点,如果需要更深入的技术信息,那么我可以提供。希望有足够的信息回答最初的问题 我在Visual Studio 2010中使用C++和DirectShow编写应用程序。主要项目规范用于现场预览,并在任何时候选择将视频录制到mpeg2到硬盘,然后再录制到dvd,以便在标准dvd播放机中播放,现场预览始终不会中断 对于directshow来说,捕获似乎是一件非常简单的标准直截了当的事情 我编写了两个自定义

我相信这个问题以前会被问到,但我已经搜索过了,找不到任何具体的帮助解决方案

我将开始概述最初的关注点,如果需要更深入的技术信息,那么我可以提供。希望有足够的信息回答最初的问题

我在Visual Studio 2010中使用C++和DirectShow编写应用程序。主要项目规范用于现场预览,并在任何时候选择将视频录制到mpeg2到硬盘,然后再录制到dvd,以便在标准dvd播放机中播放,现场预览始终不会中断

对于directshow来说,捕获似乎是一件非常简单的标准直截了当的事情

我编写了两个自定义过滤器。没有什么了不起的,但我们想要我们自己的自定义屏幕覆盖信息-时间和日期等-这必须在预览和录制的文件。我使用连接到采集卡视频输出引脚的avi解压器,并将avi解压器连接到我的过滤器,以提供我可以操作的rgb图像。然后,该过滤器的输出通过inftee过滤器分离,一个进入屏幕,另一个进入ms mpeg2编码器。音频从捕获卡音频输出到同一个mpeg2编码器。然后,来自mpeg2编码器的输出进入一个文件。然后,该文件被编写成dvd并刻录成dvd

所以我的问题是

通过用户操作,在何处以及如何才能最好地只允许启动和停止mpeg2文件输出

我曾尝试使用智能T形滤波器-1个用于视频,1个用于音频,作为mpeg2编码器之前的最后一个滤波器,然后使用iamstreamcontrol接口在适当的时间关闭管脚。这是否会导致最终mpeg2出现任何计时问题?由于输出文件将通过mplayer和vlc等播放,但不会转换为mpeg2 dvd兼容(用于测试-通过任何dvd创作软件-投诉文件损坏,某些时间提供时间参考)-文件中的时间戳是否可能存在问题并给出错误?如果从捕获开始的第一刻(而不是5分钟的流式传输)捕获文件,那么一切都正常

我确实想过使用streambuffer路线,但我不确定最佳方向。看来,最好的方向可能有几个选择

任何帮助和提示都将不胜感激。特别是如果有网站/书籍/DirectShow筛选器、PIN、图形以及它们如何一起流动的信息

编辑:我正在考虑制作我自己的“智能T恤”过滤器的副本,因为我会有2个插脚输入-音频和视频-和4个输出插脚-2个视频(1个预览和1个捕获)和2个相同的音频,但我最终会遇到同样的问题吗?什么是正确的方法来处理“关闭”自定义过滤器的捕获引脚。我会浪费时间做这样的事情吗?这是覆盖输出引脚的激活/非激活方法并发送或不发送样本的简单情况吗?我觉得没那么容易

非常感谢

通过用户操作,在何处以及如何才能最好地只允许启动和停止mpeg2文件输出

对于这种行动,我会推荐。创建自己的过滤器并不容易。GMFBridge允许您使用两个具有动态连接的独立图形。第一个图形用于预览,第二个图形用于文件输出。并且仅在用户操作后连接图形