将录制的音频从浏览器流式传输到服务器
Posted
技术标签:
【中文标题】将录制的音频从浏览器流式传输到服务器【英文标题】:Stream recorded audio from browser to server 【发布时间】:2014-01-17 23:30:27 【问题描述】:我想将录制的音频从浏览器实时流式传输到服务器并播放。服务器最终将成为播放这些音频流的嵌入式设备。
到目前为止,我已经成功录制了音频并将其编码为 WAVE 文件,并使用网络音频 API 并按照 tutorial 在浏览器上播放。
现在我有一个 .WAV 编码的 blob 流。我尝试想办法通过网络套接字连接将这些流式传输到 nodejs 后端,并使用 npm 模块播放它们。但我没有运气。
有人知道我应该遵循的任何资源或模块吗?也许我应该尝试不同的方法?由于在浏览器上录制,音频需要在服务器上相对快速地播放。
【问题讨论】:
另见Tutorial: html Audio Capture streaming to Node.js (no browser extensions)及其github 【参考方案1】:我目前正在使用一些允许通过您的网络浏览器流式传输到互联网广播服务器的软件。
我使用 WebAudio API 和 getUserMedia 从声音设备获取实时 PCM 音频数据。从那里,我根据可用带宽量将此数据从 32 位浮点数转换为 16、12 或 8 位数据。这个转换后的 int 样本被写入带有 BinaryJS 的流设置,它在 Node.js 和客户端上包装流。作为 BinaryJS 的一个好处,您可以打开任意数量的流,因此我在同一个 WebSocket 连接上使用第二个流来控制数据。
http://demo.audiopump.co:3000/
【讨论】:
BinaryJS 看起来是个不错的选择。知道如何在扬声器服务器端播放二进制流吗? @ConorPatrick 这完全取决于您的平台。每个都是不同的。大多数音频播放平台都有 NPM 模块。 您是否可以发布一个用于连接音频源和流式传输到服务器的 javascript 示例?几个月来我一直在努力解决这个问题,但我觉得我离这个更近了。 @NealR 将音频流式传输到节点的完整示例:github.com/noamtcohen/Audiostreamer 谢谢@NealR,您将如何将流的块保存为单独的文件?即每 2 秒保存一个音频文件,例如从流中保存以上是关于将录制的音频从浏览器流式传输到服务器的主要内容,如果未能解决你的问题,请参考以下文章
将音频从浏览器流式传输到具有特定 MIME 类型的 node.js 服务器