繁体   English   中英

使用DirectShow.NET的音频同步问题

[英]Audio Sync problems using DirectShow.NET

我在DirectShow.NET的论坛上开始了一个帖子,这里是链接http://sourceforge.net/projects/directshownet/forums/forum/460697/topic/5194414/index/page/1但不幸的是问题仍然存在...

我有一个应用程序捕获来自网络摄像头的视频和来自麦克风的音频并将其保存到文件中,由于某种原因,音频和视频从不同步,我尝试了以下内容:1。开始使用ffdshow编码器并更改为AVI Mux - 问题仍然存在,音频延迟,在视频结束时图像保持冻结,音频继续2.从AVI Mux更改为WM ASF Writer - 视频在开始时冻结(2秒),其余视频在-sync(但前两个秒不可用)3。创建SampleGrabber,打印音频和视频的时间戳 - 看到音频时间戳早于500毫秒,但我不知道如何处理这个事实...... 4。尝试手动将ReferenceClock设置为其中一个捕获过滤器(音频/视频),但两者都不会转换为IReferenceClock 5.创建一个SystemClock并设置它具有ReferenceClock - 没有区别6.在grap上设置SyncUsingStreamOffset(true) - 时间戳现在更近了,但最终的结果是 同样7.尝试将音频和视频保存到两个不同的文件,并使用VirtualDub查看它们是否匹配,但它们仍然不...

哦,我忘了提到我也尝试在GraphEditPlus中构建图形,但问题仍然存在,这里是图表的链接: http//www2.picturepush.com/photo/a/8030745/img/8030745.png

目前,我正在测试来自DirectShow.NET样本的CapWMV样本的所有更改。

请高度赞赏任何建议,我没有希望:/

谢谢,

伊兰。

更新:

似乎音频和视频之间有500毫秒不等的差距,如果我使用virtualDub将音频延迟500毫秒它看起来很好,怎么能在图中设置它?

您在音频流上的延迟等于捕获缓冲区的大小。 也就是说,您获得了0.5秒后开始捕获的完整缓冲区。 您需要使用较小的缓冲区和/或在缓冲区上应用偏移量来调整延迟。

看到:

IAMBufferNegotiation是关键字。

只是想为我的情况添加解决方案,也许它会帮助某人。

我试图将来自网络摄像头的视频与来自麦克风的音频一起录制,视频是HD(1080p),因此我想保存以MPEG4编码的AVI文件,因此我使用了ffshow-tryous(免费的Mpeg4编码器)和Avi Mux过滤,问题是我的视频中的一些(其中大部分:))都有同步问题。

我发现Avi Mux不处理同步,它假设数据在适当的时间到达(这里写的 - http://msdn.microsoft.com/en-us/library/dd407208(v=vs.85)。 aspx ),所以我尝试使用WMAsfWriter来处理同步并且工作正常(我上面提到的2秒冻结只是VLC播放器的一个小问题)但它在高分辨率下效果不好而且我在使用自定义时遇到了麻烦配置文件(过滤器不会连接)。

我也尝试过罗曼的建议,虽然链接非常有趣和有前途(我真的建议阅读它们 - 不能给帖子+1但是......)它没有任何区别:/

我的最终解决方案是放弃使用MPEG4,只使用MPEG2,我从Avi Mux切换到微软MPEG2编码器,效果很好,应该考虑很久以前:)

希望这会帮助别人。

谢谢,

伊兰。

我有同样的问题,使用Xvid MPEG-4解码器将视频从WMV渲染到AVI。

没有放弃MPEG-4的最终解决方案是配置AviMuxer设置ConfigAviMux :: SetMasterStream属性

如从MSDN配置中捕获视频到AVI文件中所述:

如果要从两个独立的设备捕获音频和视频, 最好将音频流作为主流 这有助于防止两个流之间的漂移,因为AVI Mux滤波器调整视频流上的回放速率以匹配音频流。

示例代码:

IConfigAviMux _filterAVIMuxerCfg = (IConfigAviMux)_filterAVIMuxer;
_filterAVIMuxerCfg.SetMasterStream(0); // I've add first audio ;)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM