1
30
|
2
10
看看报纸 An Internet Protocol Sound System 作者:微软研究院的汤姆·布兰克。他解决了你正在处理的确切问题。他的解决方案包括跨机器同步时钟,并使用时间戳让它们在同一时间播放。这种方法的缺点是延迟。要使所有时钟同步,需要在网络上的最大延迟处标记时间。 |
3
9
困难的问题,但有可能。 使用NTP或 tictoc 让你自己得到一个同步时钟与已知的速率在您的系统的时间来源。 同时,让一个估计器运行在你的声音时钟的速率上;通常的方法是用正在播放的同一个声音设备进行录制,在一个预先加载了一个神奇数字的缓冲区中进行录制,并通过同步时钟(或vice vERSA,看看在同步时钟上进行已知数量的采样需要多长时间)。你需要继续这样做,时钟将相对网络时间漂移。 所以现在你知道了你的声卡时钟每秒需要输出多少个样本来匹配同步时钟的速率。因此,然后按该速率对从网络接收到的样本进行插值,如果需要从上一个缓冲区的位置补上或退回一点,则加上或减去一个校正。您将需要非常小心地进行这种插值,这样就不会引入音频伪影;下面是示例代码 here 对于你需要的算法,但在你开始加速之前,它将是相当多的阅读。 当然,如果你的音源是现场录制的,你必须在发送前测量声卡的采样率并插入到网络时间采样中。 |
4
6
根据场地的大小和形状, 是 同步是最简单的部分,让一切 声音 如果可能的话,正确本身就是一种艺术形式。从技术方面来说,最困难的部分是找出从同步时间线到实际声音输出的延迟。拥有相同的硬件和低延迟软件框架(asio,jack)当然有帮助,校准也是如此。提前或主动。否则,它只是将时间线与ntp同步,并使用音频音调的闭环反馈将输出同步到约定的时间线。 更大的问题是声音传播需要相当长的时间。10米的距离差已经是30米的延迟——足以搞砸声音定位。加倍,你就会进入讨厌的回声区。专业的音频设置实际上有目的地引入延迟,使用更多的高音和混响播放,以避免不和谐的回声,使听众疲惫不堪。 |
5
0
“……只要它被人类的听众认为是同步的”——很难做到,因为耳朵比眼睛更不宽容。尤其是如果你想在无线网络上做这件事。 我将首先试验基于网络的技术,远程控制的flash音频播放器 通过javascript的服务器。 如果结果不好,那么我会尝试使用python(与pygame一起)之类的工具来获得更多的控制。 如果有进展,我也会尝试使用 ChucK 并尝试使用ALSA音频库进行一些低级编程。 如果没有什么令人满意的消息,我会来重新访问这篇文章,并阅读一位专业的音频编程大师所写的一些有意义的文章,如果我的生计有赖于此,那么最终可能会为商业netchorus应用程序或类似的应用程序支付14英镑。 |
J. Defenses · 节点JS,NeDB-如何使同步返回到父模块 6 年前 |
StefanoN · Java多线程-按顺序只运行一次线程运行方法 6 年前 |
merlin2011 · Android线程方法是否隐式同步? 6 年前 |
ninbura · ffmpeg-时间码和分数帧速率(复制帧) 6 年前 |
ninbura · 分段时音频缓慢去同步 6 年前 |