通过websocket的PCM音频流

通过websocket的PCM音频流,websocket,streaming,audio-streaming,pcm,Websocket,Streaming,Audio Streaming,Pcm,我一直在努力解决以下问题,无法找到解决方案。提供的java服务器应用程序通过websocket连接发送分块的pcm音频数据。没有标题等。我的任务是毫不延迟地在浏览器中播放这些原始音频数据块。在早期版本中,我使用audioContext.decodeAudioData,因为我在开始时获得了带有44字节头的完整数组。现在没有标头,因此无法使用decodeAudioData。如果有任何建议和提示,我将不胜感激。也许我必须使用一些JS解码库,任何示例或链接都会对我有很大帮助。 谢谢。1)您的要求“在浏览

我一直在努力解决以下问题,无法找到解决方案。提供的java服务器应用程序通过websocket连接发送分块的pcm音频数据。没有标题等。我的任务是毫不延迟地在浏览器中播放这些原始音频数据块。在早期版本中,我使用audioContext.decodeAudioData,因为我在开始时获得了带有44字节头的完整数组。现在没有标头,因此无法使用decodeAudioData。如果有任何建议和提示,我将不胜感激。也许我必须使用一些JS解码库,任何示例或链接都会对我有很大帮助。 谢谢。

1)您的要求“在浏览器中毫不延迟地播放这些原始音频数据块”是不可能的。发送、接收和播放音频总有一定的时间。阅读术语“延迟”。首先,你必须得到一个现实的需求。这可能是1秒或50毫秒,但你需要得到一些现实的东西

2) Web套接字使用tcp。TCP是为可靠通信、拥塞控制等而设计的。它不是为快速低延迟通信而设计的

3) 提供更多关于你的问题的信息。您的客户机和服务器是通过Internet还是通过本地Lan进行通信?这将极大地影响您的性能和设计

4) 44字节的头是wav文件头。它告诉数据类型(采样率、单声道/立体声、每个采样位数)。您必须了解此信息才能播放音频。如果您知道PCM类型,您可以自己插入它并像以前一样使用解码器。否则,您需要手动构造音频播放器


通过网络传输音频并非易事。

感谢jaybers的回复。1)大约50毫秒是可以接受的2)WebSocket上的二进制数据非常快,因此我确信它适合3)本地LAN 4)我必须几乎实时地将语音数据传输到浏览器。我的早期版本传输的是带有头的完整wav文件,但它增加了延迟。我正在挖掘的其他选项是客户端和服务器之间的webRTC,但我不确定。这是一种点对点技术。