我正在开发一个WebRTC应用程序,在该应用程序中,正好有2位音乐家在现场表演中协作,并将合并的音频流到第三方。由于不可能让两位音乐家以完全同步的方式听到另一位音乐家的声音,我的方法是:
。
A ----> B (host streams to guest over WebRTC)
\ /
\ /
┙ ┕
C ("host" and "guest" streams merged using Web Audio API)我认为实现C语言音频的完美同步应该是可能的(就像在,这并不违反物理定律)。对于此应用程序,“完美同步”意味着侦听器C应该同时听到B在time T中听到的内容,以及B在time T中播放的。
我尝试过两种方法,但都没有成功:
有一个已知的方法来同步音频这种方式与WebRTC?这是一个获得正确的WebRTC统计数字的问题,还是我的方法完全偏离了?
发布于 2020-04-11 08:23:54
对于解决方案B合并音频,延迟来自延迟浏览器=>环境和环境=>浏览器:由于B在环境中监听和播放,因此这两个流在环境中是同步的,因此B的浏览器中这两个延迟之和。这种影响的大小取决于B的硬件、操作系统和浏览器;没有办法测量它。有一些工具可用于此度量,如jack (https://sources.debian.org/src/jack-delay/0.4.2-1/README/),但这些工具在浏览器中不起作用。由于您是在WebRTC设置中,所以我认为类似于https://github.com/ntgiwsvp/looper中的前端/交叉关联. is是您的选择。
对于解决方案A合并音频(与C合并音频类似),到目前为止,我只知道一个经过验证的解决方案来解决这个问题,不幸的是,这是个小问题:
。
在上面提到的存储库中的文件前端/client.js中,您需要的大部分内容都有一个工作实现。(您的设置有点不同,但同样的概念也适用。)
https://stackoverflow.com/questions/61072503
复制相似问题