我一直在努力解决以下问题,无法找到解决方案。所提供的java服务器应用程序通过websocket连接以块形式发送pcm音频数据。没有标题等。我的任务是在浏览器中毫无延迟地播放这些原始音频数据块。在较早的版本中,我使用audioContext.decodeAudioData,因为我在开始时获得了带有44字节头的完整数组。现在没有标题,所以decodeAudioData不能使用。我将非常感谢任何建议和提示。也许我必须使用一些JS解码库,任何例子或链接将帮助我很多。谢谢。
1)你的要求"在浏览器中播放这些原始音频数据块,没有任何延迟"是不可能的。发送、接收和播放音频总是需要一定的时间。阅读术语"延迟"。首先,你必须有一个现实的需求。它可能是1秒或50毫秒,但你需要得到一些真实的东西。
2) Web sockets使用tcp。TCP是为可靠的通信、拥塞控制等而设计的。它不是为快速低延迟通信而设计的。
3)给出更多关于你的问题的信息。您的客户端和服务器是通过Internet还是通过本地局域网进行通信?这将极大地影响你的性能和设计。
4) 44字节的头是一个wav文件头。它告诉数据类型(采样率,单声道/立体声,每个采样位)。你必须知道这些信息才能播放音频。如果您知道PCM类型,您可以自己插入它并像以前一样使用您的解码器。否则,您需要手动构建一个音频播放器。
通过网络传输音频不是一件小事。