2

我正在处理从 directshow 音频/视频捕获源(带麦克风的网络摄像头)捕获音频/视频。我想问你们是否有人真正深刻地了解应该如何进行同步。

到目前为止,我能够使用参考时钟找到该图,它应该同步图中的所有过滤器,并且音频捕获设备确实有一个默认缓冲区 500 毫秒,我可以将其设置为更低。

基于这篇文章 http://blogs.msdn.com/b/medmedia/archive/2007/03/05/basics-of-av-synchronization-in-directshow.aspx

我发现音频渲染器被设置为 ReferenceClock 的默认值。所以我像这样构建:

Audio Capture -> Infinite Pin Tee Filter -> Default DirectSound Device
                     -> WM ASF WRITER

Video Capture -> Infinite Pin Tee Filter -> Color space converter -> Video Render
                     -> WM ASF WRITER 

如果图中的所有过滤器都通过参考时钟同步,并且 WM ASF WRITER deos 处理时间戳。我希望因为默认 DirectSound 设备已设置参考时钟 WM ASF WRITER 应该同步。但事实并非如此。我可以在捕获过程中看到音频/视频渲染是同步的。但最终的 WMV 文件不是,我不明白为什么。

我要处理的第二个问题是音频捕获设备立即准备就绪,但视频捕获设备需要 2-3 秒。有没有办法处理这个问题,所以我没有前 2-3 秒没有视频的 wmv?

非常感谢您提供的任何链接、帮助或建议问候 Teamol

4

2 回答 2

0

您不需要对第一个音频/视频同步问题进行故障排除。事实上,同步问题似乎是由于第二个问题,即您的视频捕获源在初始化时有延迟。

您共享的一些代码片段对我有帮助,可以告诉您实际问题出在哪里。

现在请以以下示例应用程序作为参考,希望您不会遇到任何问题。

AmCap 样本

于 2013-09-30T14:31:26.007 回答
0

无论如何,您的视频设备都需要初始化,因此在刚刚启动过滤器图之后,可能并不总是可以立即从中获得“好”的图片帧。

解决方案是:几秒钟后开始写入视频,丢弃第一个传入的帧。例如,创建一个自定义转换过滤器并将其设置在 InfTee 和 ASFWriter 之间。或者,将捕获预览图和编写器图分开(例如,使用 GMFBridge,但更好地创建自己的解决方案)。

关于同步问题,您能否更准确地解释您的问题?您是否尝试过从图表中删除渲染器并查看是否有帮助?

于 2013-10-04T12:39:16.153 回答