【发布时间】:2019-08-24 16:03:06
【问题描述】:
您好,我想知道如何在 javascript 或 reactjs 中从流媒体站读取数据?
遗憾的是,我在谷歌上搜索过,我没有运气,我想知道是否有人知道可以读取的脚本(icecast ICY 元数据?)
【问题讨论】:
标签: javascript reactjs icecast
您好,我想知道如何在 javascript 或 reactjs 中从流媒体站读取数据?
遗憾的是,我在谷歌上搜索过,我没有运气,我想知道是否有人知道可以读取的脚本(icecast ICY 元数据?)
【问题讨论】:
标签: javascript reactjs icecast
请注意,Web 浏览器不支持 ICY 元数据,因此您必须手动实现很多东西并且只为元数据使用整个流.我不推荐这个。
正如您所说的 Icecast,获取元数据的推荐方法是查询 JSON 端点:/status-json.xsl。 It's documented.
听起来您正在为某个服务器定制构建,所以这应该是一个好方法。请注意,您必须运行最新的 Icecast 版本(至少 2.4.1,但出于安全原因,最好是最新版本)。
如果您想访问您无法控制的随机 Icecast 服务器,这会变得很复杂:https://stackoverflow.com/a/57353140/2648865
如果您想播放流和然后显示它的 ICY 元数据,请查看 miknik 的答案。 (它适用于传统的 ICY 流,不适用于 WebM 或 Ogg 封装的 Opus、Vorbis 等)
【讨论】:
我写了一个脚本来做这个。
它实现了一个服务工作者并使用Fetch API 和Readable Streams API 来拦截从您的页面到您的流媒体服务器的网络请求,将必要的标头添加到请求中以从您的流媒体服务器启动流内元数据,并然后在通过页面上的音频元素播放 mp3 时从响应中提取元数据。
由于对 service worker 和 Fetch API 的限制,我的脚本只有在您的网站通过 SSL 提供服务并且您的流媒体服务器和网站位于同一个域中时才能工作。
您可以在 Github 上找到代码以及它的一个非常基本的实际演示 here(打开控制台窗口以查看从 Service Worker 传递的数据)
【讨论】:
我对流的了解不多,但我在谷歌上找到了一些东西,哈哈
https://www.npmjs.com/package/icy-metadata
还有这个
Developing the client for the icecast server 它用于 php,但也许您可以将其翻译为 JS。
【讨论】: