2

我敢肯定这个问题之前会被问到,但我已经搜索过并且找不到任何具体的帮助解决方案。

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

我正在 Visual Studio 2010 中使用 c++ 和 directshow 编写应用程序。主要项目规范是用于实时预览,并且在选择的任何时候,将视频录制到 mpeg2 到硬盘驱动器,然后录制到 dvd 以在标准 dvd 播放器中播放, 实时预览始终不被打断。

捕获似乎是与 directshow 相关的非常简单的标准。

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

所以我的问题是...

在哪里以及如何是允许通过用户操作仅启动和停止 mpeg2 文件输出的最佳位置?

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

我确实考虑过使用流缓冲路由 - http://msdn.microsoft.com/en-gb/library/windows/desktop/dd693041(v=vs.85).aspx - 但我不确定最佳方向拿东西。似乎这可能是最佳方向的几个选择。

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

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

非常感谢!

4

1 回答 1

1

在哪里以及如何是允许通过用户操作仅启动和停止 mpeg2 文件输出的最佳位置?

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

于 2014-07-05T07:38:08.643 回答