将原始音频数据从服务器流式传输到客户端

Stream raw audio data from server to client

我正在为浏览器开发音频模拟器应用程序。它应该向用户播放 WAV 文件(或任何其他原始音频二进制格式),但用户能够实时更改信号的某些参数并听到已经播放的音频文件的变化。

改变声音的算法是专有的,并且在 Java 中已经有一个作为桌面应用程序的工作解决方案,但我必须在线设置它。我正在寻找一种解决方案,其中大部分将在服务器端完成并且让客户端仅发送参数。

我的目标不是在服务器上打开例如“/something.wav”并播放它,而是提取音频数据(我已经拥有)并以某种方式将原始音频数据发送到客户端玩。这可能吗?如果可以,实现它的最佳方法是什么?

在客户端,最简单的事情就是一个简单的 HTML5 音频标签:

<audio src="https://your-audio-server/some-id" preload="none" controls></audio>

preload="none" 防止音频提前缓冲。 (这是实时的,因此您不希望在用户点击播放之前将过去的数据缓冲几秒或几分钟!)

大多数浏览器都支持 WAV 文件播放。因此,您需要做的就是实时发送 WAV 流。您的服务器应该接受此 PCM 输入,发送适当的 headers,然后开始发送 PCM 数据。客户端将缓冲几秒钟,然后开始播放。

也就是说,您的服务器将多路复用到实时 WAV 流并将该输出实时流式传输到客户端。客户端不知道也不关心它接收的是文件还是直播。