gpt4 book ai didi

c++ - 确定声音在 Portaudio 中开始播放的确切时间

转载 作者:行者123 更新时间:2023-11-28 07:17:41 26 4
gpt4 key购买 nike

我正在通过 Qt 和 libsndfile 在 C++ 中的 Portaudio 中播放一个 wav 文件。这工作得很好。我需要以低延迟播放声音,因此我正在尝试优化我的代码,以便文件的实际播放时间等于文件的理论持续时间。

我注意到在我调用 Pa_StartStream(stream); 后声音并没有立即开始播放,而是有一个小的延迟。我想知道声音开始播放而不是加载的确切时间,以毫秒为单位,因为我还有其他一些事情取决于那个时间。

显而易见的方法是:

myTimer.start();
Pa_StartStream(stream);

但我认为Portaudio会先调用我的回调函数,加载缓冲区,然后开始播放,这会使我测量的时间失效,对吧?

如何知道播放开始的确切时间?当我们在做的时候,我怎么知道它什么时候结束(我知道我什么时候将我的最后一个数据写入缓冲区,但我不知道它什么时候正在播放..)

谢谢

最佳答案

我怀疑您能否(准确地)知道音频流何时开始。您当然可以通过使用 Pa_SetStreamFinishedCallback 查看它何时完成。 .

关于c++ - 确定声音在 Portaudio 中开始播放的确切时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19977630/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com