【发布时间】:2017-04-22 00:58:51
【问题描述】:
我想使用 c/c++ 脚本从公共触发信号同步两台不同计算机上的音频播放和录制。预计延迟不应超过 1 毫秒。
检索信号然后启动脚本并不是真正的问题,延迟非常小(几微秒)。
目前,我陷入了大约 20 毫秒的平均延迟(从播放开始到记录开始之间),并且偏差非常重要(5 到 10 毫秒)。 计算机在 Linux 上运行,我正在使用 alsa-utils 中的 aplay 和 arecord(使用 system() 命令直接从代码开始)。
是否有人有减少或控制两个音频接口之间延迟的好主意或经验?
在我看来,应该有一种方法来初始化两个接口(速率,输出格式,...),对于播放设备,将数据预加载到音频缓冲区中,然后在收到信号时开始播放。
谢谢
【问题讨论】:
-
音频同步是一件棘手的事情。也许你应该看看 JACK 而不是直接弄乱 alsa API。你绝对可以做一个JACK输出,在多台电脑上同步输出音频。
标签: c++ c linux audio synchronization