Directshow音频/视频捕获同步

时间:2013-09-27 08:45:34

标签: audio video sync directshow

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

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

基于这篇文章 http://blogs.msdn.com/b/medmedia/archive/2007/03/05/basics-of-a-v-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秒。有没有办法解决这个问题,所以我没有wmv,前2-3秒没有视频?

非常感谢您提供任何链接,帮助或建议 关心Teamol

2 个答案:

答案 0 :(得分:0)

您无需解决第一个音频/视频同步问题。 实际上,同步问题似乎是由于第二个问题,即您的视频捕获源在初始化时有延迟。

您分享的一些代码段本来可以帮助我,告诉您实际问题在哪里。

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

AmCap Sample

答案 1 :(得分:0)

您的视频设备无论如何都需要进行初始化,因此在过滤器图刚刚启动后,可能无法立即从中获取“好”的相框。

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

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