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

使用Node.js将音频流传输到html5音频标签并绕过iOS限制,ios,node.js,audio-streaming,html5-audio,Ios,Node.js,Audio Streaming,Html5 Audio,我目前正在从事一个使用HTML5音频的项目,我们在iOS设备的限制方面遇到了问题(主要是多个音频通道限制) 我在想,也许可以使用node.js在服务器端控制声音。客户端将连接到一个单一的音频url,节点服务器将通过该单一频道流式播放现场声音,并在服务器上实时进行所有混音和转换 技术上可能吗?你能在node.js上解析音频并进行现场混音吗?你认为服务器会同时出现5个以上的客户端吗 谢谢是的,这是完全可能的,但正如Sam指出的,缓冲是一个问题。在以下几点上存在明显的延迟: 从客户端获取控制命令 将

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

我在想,也许可以使用node.js在服务器端控制声音。客户端将连接到一个单一的音频url,节点服务器将通过该单一频道流式播放现场声音,并在服务器上实时进行所有混音和转换

技术上可能吗?你能在node.js上解析音频并进行现场混音吗?你认为服务器会同时出现5个以上的客户端吗


谢谢

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

  • 从客户端获取控制命令
  • 将原始PCM音频混入内部缓冲区
  • 使用正确的编解码器编码数据(需要分块执行此操作)
  • 发送音频数据
  • 缓冲客户端
  • 客户端播放缓冲区
把这些加起来,即使你能很快地让它工作,你仍然会看到几秒钟的延迟

如果您决定这样做,您将需要一个外部应用程序(或编写您自己的节点扩展)来为您进行混合和编码。Sox可能是一个不错的选择,FFMPEG包含许多编解码器供您使用。您可以在STDIO上同时使用这两个选项


关于服务器负载。。。这并不是一个轻量级的过程,但你必须对它进行分析,看看它到底有多糟糕。我建议您在尝试类似操作之前,尝试在客户端同时播放多个音频流。

请参阅此链接。它按预期工作,但问题在于客户端控制


你希望通过预处理音频文件来完成哪些不能完成的任务?例如,SamDufel,一个恒定的背景声音,其他声音可以通过点击激活。实际上,我们将在这个特定项目中使用预处理解决方案,但我认为这可能是一个实时/动态体验的解决方案。有趣的是。。。不过,由于缓存问题,我不确定这是否可行。更一般地说,当你需要连续的背景声音,并且不知道何时会播放其他声音时,你会被ios*缓冲区问题搞砸,也就是说。我不知道是否有办法限制设备缓冲音频流的距离为什么不使用lame@TooTallNate为它写了一个很好的包装器,@eaterofcasters,LAME只是一个MP3编解码器。如果你想要更广泛的浏览器支持,你需要支持的不仅仅是MP3。此外,FFMPEG构建通常捆绑LAME作为可能的编解码器,因此您最好使用FFMPEG以获得更好的支持。
https://stackoverflow.com/questions/32012695/nodejs-streaming-for-audio-video-with-client-side-control