Javascript Web Audio Api 16位到32位太慢(特别是对于这种时间紧迫的操作)/工人

Javascript Web Audio Api 16位到32位太慢(特别是对于这种时间紧迫的操作)/工人,javascript,api,web-worker,web-audio-api,Javascript,Api,Web Worker,Web Audio Api,我正在从服务器获取16位音频,目前正在从服务器发送。 它是交错的。 这意味着我需要在javascript中循环并将左右分隔为2个32位数组。 这对于javascript执行和安排播放时间来说太慢了。事情变得不同步了。这是一条实时流。因此,web api似乎只为本地Syth等实现。流式pcm似乎不是一个好的方法。我知道,你永远不会发送pcm开始。我想送vorbis或类似的东西。它们必须放在像.ogg或webm之类的容器中,但浏览器有其内部缓冲,我们几乎没有控制权 所以O尝试发送ADPCM并用Jav

我正在从服务器获取16位音频,目前正在从服务器发送。 它是交错的。 这意味着我需要在javascript中循环并将左右分隔为2个32位数组。 这对于javascript执行和安排播放时间来说太慢了。事情变得不同步了。这是一条实时流。因此,web api似乎只为本地Syth等实现。流式pcm似乎不是一个好的方法。我知道,你永远不会发送pcm开始。我想送vorbis或类似的东西。它们必须放在像.ogg或webm之类的容器中,但浏览器有其内部缓冲,我们几乎没有控制权

所以O尝试发送ADPCM并用Javascript将其解码到客户端上的PCM。这也太慢了

如果我发送数据并在服务器上进行预处理。无法在服务器上保存并将其转换为32位浮点并发送到客户端。数据大小加倍。16位到32位

那么,在客户端不进行处理的情况下渲染16个音频的最佳方法是什么呢

还可以播放工作线程中的音频。在辅助线程中实现转换会有所帮助。我的意思是websocket通信都在进行,JS是单线程的


我还想补充一点,在mac pro上的chrome上进行计算是可行的(更好,我几乎听不到样本之间有任何问题),当我将其与运行在pc上的客户端进行比较时,

不,您当前无法播放来自工作线程的音频。然而,我真的怀疑你的问题在于去交错音频数据的成本;你试过只发送单声道流吗?在真实的网络环境中正确地同步和缓冲流是相当复杂的