使用Node.js将音频流式传输到html5音频标签并绕过iOS限制

Dav*_*pas 6 audio-streaming node.js ios html5-audio

我目前正在开发一个使用HTML5音频的项目,我们遇到iOS设备限制问题(主要是多个音频通道限制).

我当时认为可以使用node.js控制服务器端的声音.客户端将连接到单个音频URL,节点服务器将通过此单个通道流式传输实时声音,在服务器上进行所有混音和转换.

技术上可行吗?你能解析node.js上的音频并进行实时混音吗?您是否认为服务器将同时爆发超过5个客户端?

谢谢

Bra*_*rad 4

是的,这是完全可能的,但正如 Sam 指出的,缓冲是一个问题。在几个点上会出现明显的延迟:

  • 获取客户端的控制命令
  • 将原始 PCM 音频混合到内部缓冲区中
  • 使用正确的编解码器对数据进行编码(要求您分块执行此操作)
  • 发送音频数据
  • 客户端缓冲
  • 客户端的播放缓冲区

把这一切加起来,即使你让它工作得很快,你仍然会看到几秒钟的延迟。

如果您决定走这条路,您将需要一个外部应用程序(或编写您自己的 Node 扩展)来为您进行混合和编码。Sox 可能是一个不错的选择,并且 FFMPEG 包含许多编解码器供您使用。您可以通过 STDIO 使用两者。

关于服务器负载......这不是一个轻量级的过程,但您必须对其进行分析才能了解它到底有多糟糕。我建议您在尝试此类操作之前尝试在客户端一次播放多个音频流。