当前位置: 首页 > 编程语言 > C#

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

时间:2023-04-10 22:51:17 C#

使用DirectShow.NET的音频同步问题23/8030745.png我目前正在测试从CapWMV示例到DirectShow.NET示例的所有更改。非常感谢任何建议,我很绝望:/谢谢,Elan。更新:音频和视频之间似乎有500毫秒的间隔,如果我使用virtualDub将音频延迟500毫秒,它看起来不错,我如何在图中设置它?您在音频流上的延迟等于捕获缓冲区的大小。也就是说,您将获得0.5秒后开始捕获的完整缓冲区。您需要使用较小的缓冲区和/或在缓冲区上应用偏移量来调整延迟。请参阅:IAMBufferNegotiation是一个关键字。只是想为我的情况添加解决方案,也许它会对某人有所帮助。我正在尝试使用来自麦克风的音频从网络摄像头录制视频,该视频是高清(1080p),所以我想保存一个以MPEG4编码的AVI文件,所以我使用了ffshow-tryous(免费的Mpeg4编码器)和AviMux过滤,问题是我的一些视频(大部分:))有同步问题。我发现AviMux不处理同步,它假定数据在正确的时间到达(如此处所写-http://msdn.microsoft.com/en-us/library/dd407208(v=vs.85)。aspx),所以我尝试使用WMAsfWriter来处理同步并且它工作正常(我上面提到的2秒冻结只是VLC播放器的一个小故障)但是它在高分辨率下效果不佳而且我遇到了麻烦自定义配置文件(过滤器不会连接)。我也尝试了Roman的建议,虽然链接非常有趣且很有前途(我真的建议阅读它们-不能+1帖子但是......)它没有任何区别:/我最终的解决方案是放弃使用MPEG4,仅使用MPEG2,我从AviMux切换到MicrosoftMPEG2编码器,效果很好,应该早就考虑过了:)希望这对其他人有帮助。谢谢,伊兰。我在使用XvidMPEG-4解码器将视频从WMV渲染为AVI时遇到了同样的问题。我没有放弃MPEG-4的最终解决方案是配置AviMuxer设置ConfigAviMux::SetMasterStream属性,如从MSDN配置捕获视频到AVI文件中所述:如果您想从两个单独的设备捕获音频和视频,最好以音频流为主流。这有助于防止两个流之间的漂移,因为AVIMux过滤器会调整视频流的播放速率以匹配音频流。示例代码:以上是C#学习教程:使用DirectShow.NET音频同步问题分享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注—IConfigAviMux_filterAVIMuxerCfg=(IConfigAviMux)_filterAVIMuxer;_filterAVIMuxerCfg.SetMasterStream(0);//我先加了音频;)本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: