WASAPI滞后回放 我正在编写一个程序,用C++来回放麦克风。在发送给扬声器之前,我必须修改位。首先,我想在没有任何影响的情况下播放麦克风,因为它是滞后的。频率和比特率是相同的(24位,192000Hz),但我也尝试了(24位,96000Hz)。我调试了它,似乎扬声器速度更快,因此它必须等待来自麦克风的数据,就像吱吱声可以在更高的频率下工作一样,但根据设置,它不会。有人知道这里有什么问题吗

WASAPI滞后回放 我正在编写一个程序,用C++来回放麦克风。在发送给扬声器之前,我必须修改位。首先,我想在没有任何影响的情况下播放麦克风,因为它是滞后的。频率和比特率是相同的(24位,192000Hz),但我也尝试了(24位,96000Hz)。我调试了它,似乎扬声器速度更快,因此它必须等待来自麦克风的数据,就像吱吱声可以在更高的频率下工作一样,但根据设置,它不会。有人知道这里有什么问题吗,c++,audio,microsoft-metro,wasapi,C++,Audio,Microsoft Metro,Wasapi,当您说存在一些“滞后”时,您的意思是在向音频捕获设备提供数据和播放设备呈现数据之间存在一些延迟,还是说音频流在呈现每个样本之间有小的停顿被“截断” 如果播放有延迟,我会看看您初始化音频捕获客户端的延迟值 如果有小的暂停,我建议您使用样本数据的双缓冲,这样一个缓冲区被渲染,而另一个缓冲区被从音频捕获设备重新提取 扬声器的速度不可能更快——只要它的工作频率与您设置的频率相同,它就可能有(并且有)缓冲。整个音频流的想法是,播放需要预加载的缓冲区,以实现平滑操作,而在捕获端,您可以接收到延迟至少为缓冲区

当您说存在一些“滞后”时,您的意思是在向音频捕获设备提供数据和播放设备呈现数据之间存在一些延迟,还是说音频流在呈现每个样本之间有小的停顿被“截断”

如果播放有延迟,我会看看您初始化音频捕获客户端的延迟值


如果有小的暂停,我建议您使用样本数据的双缓冲,这样一个缓冲区被渲染,而另一个缓冲区被从音频捕获设备重新提取

扬声器的速度不可能更快——只要它的工作频率与您设置的频率相同,它就可能有(并且有)缓冲。整个音频流的想法是,播放需要预加载的缓冲区,以实现平滑操作,而在捕获端,您可以接收到延迟至少为缓冲区长度的完整缓冲区。