audio - 网络音频直播
问题描述
有一个音频流从移动设备发送到服务器。服务器将数据块(由于网络套接字)发送到网络。问题是。在现场模式下使用什么来播放此音频,也应该有可能将音频倒回,听以前的内容......然后再次切换到现场模式。
我考虑了 Media Source API 这样的可能性,但 Safari 和 Chrome 在 IOS 上不支持,不是吗?但我们需要这种支持。
此外,还有现代浏览器支持的 Web Audio API,但我不确定是否可以在实时模式下收听音频并将音频倒回?
关于如何实施它的任何想法或指南?
解决方案
我考虑了 Media Source API 这样的可能性,但 Safari 和 Chrome 在 IOS 上不支持,不是吗?但我们需要这种支持。
然后,您不能使用 MediaSource 扩展。感谢苹果!
服务器将数据块(由于网络套接字)发送到网络。
如果没有 MediaSource Extensions,您将无法使用来自 Web 套接字连接的数据。(除非它是 PCM,或者您正在将其解码为 PCM,在这种情况下您可以使用 Web Audio API,但这完全不切实际、效率低下,也不应该追求。)
你必须改变你的流媒体方式。你有几个选择:
最佳选择:HLS
如果您切换到 HLS,您将获得所需的兼容性,以及及时返回的能力等等。这是你应该做的。
平庸的选项:HTTP 渐进式
对于大多数用例来说,这是一种很好的流式传输方式,但没有任何内置方式来处理您想要的流式搜索。您必须构建它,这不值得您花时间,因为您可以只使用 HLS。
更平庸的选择:WebRTC
您可以切换到 WebRTC 进行流式传输,但是您大大增加了基础架构成本和复杂性。而且,你仍然需要弄清楚你将如何处理寻找。您想要走 WebRTC 路线的唯一原因是您绝对需要最低延迟。
推荐阅读
- javascript - 即使在发生错误的情况下也承诺解决并触发然后下一个功能
- php - 如何在我的 WordPress 网站中为 excel 创建一个条目表?
- python - 具有嵌套循环和 if 条件的列表理解,以及新列表的成员资格
- c++ - 运行 perl 库时的 libz 冲突
- angular - Angular Material Mat-table 不呈现数据
- django - 如何在 vue-cli 3 中设置自定义分隔符?
- c# - 如何将实时音频流传递到 Direct Line Speech 端点?
- django - 如何在 django mako 模板中获取 URL 参数?
- php - 无法使用 redis 和 socket.io 验证我的私人频道
- javascript - 在 sap.m.table 中添加和编辑项目