我正在通过 Qt 和 libsndfile 在 C++ 中的 Portaudio 中播放一个 wav 文件。这工作得很好。我需要以低延迟播放声音,因此我正在尝试优化我的代码,以使文件的实际播放时间等于文件的理论持续时间。
我注意到在我打电话后声音并没有立即开始播放,Pa_StartStream(stream);
但有一点延迟。我想知道声音开始播放而不是加载的确切时间,以毫秒为单位,因为我还有其他一些事情取决于那个时间。
显而易见的方法是:
myTimer.start();
Pa_StartStream(stream);
但是我认为Portaudio会先调用我的回调函数,加载缓冲区,然后开始播放,这会使我测量的时间无效,对吧?
如何找出播放开始的确切时间?当我们在做的时候,我怎么知道它什么时候结束(我知道我什么时候把我的最后一个数据写入缓冲区,但我不知道它什么时候播放..)
谢谢