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



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

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

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

在客户端上,最简单的方法是一个简单的HTML5音频标签:

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

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

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

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

最新更新