确定声音开始在端口音频中播放的确切时间
Determine exact time when sound starts playing in Portaudio
我正在通过Qt和libsndfile在Portaudio中播放C++的wav文件。这工作得很好。我需要以低延迟播放声音,所以我正在尝试优化我的代码,以便文件的实际播放时间等于文件的理论持续时间。
我注意到在我打电话后声音没有立即开始播放Pa_StartStream(stream);
但有一点延迟。我想知道声音开始播放而不是加载的确切时间,以毫秒为单位,因为我根据当时的时间发生了其他一些事情。
显而易见的方法是:
myTimer.start();
Pa_StartStream(stream);
但我认为 Portaudio 会首先调用我的回调函数,加载缓冲区,然后开始播放,这将使我的测量时间无效,对吧?
如何找出播放开始的确切时间?当我们在它的时候,我怎么知道它什么时候结束(我知道我什么时候将我的最后一个数据写入缓冲区,但我不知道它什么时候被播放......
谢谢
我怀疑您能否(确切地)知道音频流何时开始。您当然可以使用 Pa_SetStreamFinishedCallback
找到它何时完成。
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- C++为构建时间获取QDateTime的可靠方法
- 从持续时间构造std::chrono::system_clock::time_point
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- while循环中while循环的时间复杂度是多少
- 使用简单类型列表实现的指数编译时间.为什么
- 是否可以在编译时初始化数组,以便在运行时不会花费时间?
- 在已经使用Git的情况下减少编译时间
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 如何将包含epoch时间的十六进制字符串转换为time_t
- SFML纹理像播放器
- 从文本文件中读取时钟时间和事件时间并进行处理
- 具有未知值时的时间复杂性
- 如何减少花费的时间
- SDL_Mixer再次播放时,从随机位置开始一段时间,然后从头开始
- UE4在C 中播放时间
- MF SinkWriter mp4文件的播放持续时间是添加音频样本时的一半,图像的播放速度也是添加音频样本的两倍
- sTD :: Chrono Clocks之间的播放时间_points
- 确定声音开始在端口音频中播放的确切时间
- 如何从一个特定的点(时间码)使用Qt播放声音