0

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

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

显而易见的方法是:

myTimer.start();
Pa_StartStream(stream);

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

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

谢谢

4

1 回答 1

1

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

于 2013-11-14T12:39:36.087 回答