Windows上具有已知输出延迟的音频播放方法 我有一个C++应用程序,它接收一个时间戳的音频流,并试图尽可能接近指定的时间戳播放音频样本。为此,我需要知道从将音频样本放入输出缓冲区到实际听到音频的延迟(具有合理的准确性)
关于音频输出延迟有很多讨论,但我发现的一切都是关于最小化延迟的。这与我无关,我所需要的只是(在运行时)已知的延迟 在Linux上,我用Windows上具有已知输出延迟的音频播放方法 我有一个C++应用程序,它接收一个时间戳的音频流,并试图尽可能接近指定的时间戳播放音频样本。为此,我需要知道从将音频样本放入输出缓冲区到实际听到音频的延迟(具有合理的准确性),windows,audio-streaming,latency,openal,wasapi,Windows,Audio Streaming,Latency,Openal,Wasapi,关于音频输出延迟有很多讨论,但我发现的一切都是关于最小化延迟的。这与我无关,我所需要的只是(在运行时)已知的延迟 在Linux上,我用snd\u pcm\u delay()解决了这个问题,效果非常好,但我正在寻找一个适合Windows的解决方案 我看了以下几点: 使用OpenAL,我测量了80毫秒的延迟,这些延迟是无法解释的。我假设这不是一个硬编码的值,并且我还没有找到任何API来读取延迟。OpenAL有一些扩展声称支持这一点,但据我所知,它只在Linux上实现 Wasapi有GetStrea
snd\u pcm\u delay()
解决了这个问题,效果非常好,但我正在寻找一个适合Windows的解决方案
我看了以下几点:
- 使用OpenAL,我测量了80毫秒的延迟,这些延迟是无法解释的。我假设这不是一个硬编码的值,并且我还没有找到任何API来读取延迟。OpenAL有一些扩展声称支持这一点,但据我所知,它只在Linux上实现
- Wasapi有
,这听起来像是真正的交易,但这显然只是一些线程轮询间隔之类的东西,所以它也没用。我的机器仍然有30毫秒的延迟GetStreamLatency()
- DirectSound没有获取延迟的API?但是,仅仅跟踪输出缓冲区就可以足够接近吗
- 我对ASIO的印象是,它主要面向专业音频应用程序和音频鉴赏家,用户可能需要安装特殊的声卡驱动程序,我将不得不处理许可问题。但就功能而言,这似乎是一个不错的选择