Audio 我听到用图形编辑创建的DirectShow图形在音频中单击,但我电脑上的播放器软件可以流畅地播放音频

Audio 我听到用图形编辑创建的DirectShow图形在音频中单击,但我电脑上的播放器软件可以流畅地播放音频,audio,directshow,playback,directsound,graphedit,Audio,Directshow,Playback,Directsound,Graphedit,我有一个DirectShow应用程序,它是使用DSPACK组件库用Delphi6构建的。两天来,我一直在努力解决音频播放的问题。当我运行我创建的过滤器图形时,我会听到播放中重复的咔哒声。真正让人困惑的是,我与过滤图同时创建的音频文件具有干净的连续音频,而不是间隙。所以我知道音频缓冲区的传送是正确的,但我所做的是“干扰”了“现场”播放。至少我是这么想的。我花了两天的时间诊断问题,查找信号量保持时间过长(锁)或时间戳问题,我在另一篇堆栈溢出文章中记录了这些问题: 几分钟前,我决定尝试使用Graph

我有一个DirectShow应用程序,它是使用DSPACK组件库用Delphi6构建的。两天来,我一直在努力解决音频播放的问题。当我运行我创建的过滤器图形时,我会听到播放中重复的咔哒声。真正让人困惑的是,我与过滤图同时创建的音频文件具有干净的连续音频,而不是间隙。所以我知道音频缓冲区的传送是正确的,但我所做的是“干扰”了“现场”播放。至少我是这么想的。我花了两天的时间诊断问题,查找信号量保持时间过长(锁)或时间戳问题,我在另一篇堆栈溢出文章中记录了这些问题:

几分钟前,我决定尝试使用Graph Edit实用程序进行测试。我创建了一个非常简单的图形,它只包含我正在使用的捕获设备(VOIP电话麦克风)和我正在使用的渲染器设备(HD ATI后部音频输出到耳机)。总共两个过滤器令我大吃一惊的是,我听到了同样的点击声。所以这里有一个案例根本不涉及我的代码,我听到了点击声

然后,我将Graph Edit created filter Graph中的音频渲染器更改为VOIP电话耳片。咔哒声消失了

现在我知道有一种方法可以在ATI Rear audio设备上获得流畅的音频,因为它是首选的音频输出设备,从我在PC上播放的视频到我在其上播放的wave文件,一切听起来都完美无缺。那么,其他软件程序所做的事情是否与仅仅连接过滤器不同呢?我想知道HD ATI Rear Audio的默认模式是否没有双缓冲,或者其他软件程序是否知道如何启用该功能?或者他们正在做其他事情,例如使用另一种DirectShow或DirectSound过滤器或技术,使音频在HD ATI Rear audio renderer上平滑播放?

您可能拥有的(取决于实际的口吃)是,当您使用由不同硬件支持的捕获和播放设备时,他们的抽样率略有不同。例如,您以(22050-2%)Hz的实际速率捕获22050 Hz,并以(22050+2%)Hz的硬件消耗字节播放

现在很明显,这不会顺利进行:最终回放将体验数据隐藏。。。如果您保存到文件中并从文件中播放,它将变得平滑,因为文件将能够以播放设备的速率提供数据。如果捕获和回放设备是相同的硬件,它们可能会使用共享的“硬件”时钟和速率匹配

该问题称为“费率匹配”,在MSDN的第节中进行了讨论