【问题标题】:Determine exact time when sound starts playing in Portaudio确定声音在 Portaudio 中开始播放的确切时间
【发布时间】:2013-11-27 11:05:21
【问题描述】:

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

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

显而易见的方法是:

myTimer.start();
Pa_StartStream(stream);

但是我觉得Portaudio会先调用我的回调函数,加载缓冲区,然后开始播放,这样我测的时间就会失效,对吧?

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

谢谢

【问题讨论】:

    标签: c++ audio portaudio


    【解决方案1】:

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

    【讨论】:

    • 谢谢你,Mats,这对我很有帮助:)
    猜你喜欢
    • 2021-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多