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

时间:2020-02-17 06:38:06

标签: audio-streaming

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

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

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

1 个答案:

答案 0 :(得分:2)

在客户端上,最简单的操作是简单的HTML5音频标签:

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

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

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

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