javascript - 如何检查 webm icecast 流是否处于活动状态?
问题描述
我正在尝试检查 webm Icecast 流是否打开。对于 HLS 流,我使用 axios.head 方法,如下所示:
try {
let res = await axios.head(url);
return /2\d\d/.test('' + res.status);
} catch (err) {
console.log('err', url, err);
return false;
}
它工作正常。但是在调试过程中我了解到Icecast 不支持 HEAD 方法。
Icecast 流的 OPTIONS 方法也失败(我得到 net::ERR_FAILED)。我无法获取流,因为它会获取整个流。我只是想确保它处于活动状态。
如何检查来自 Icecast 的 webm 流是否存在?
编辑
让我再解释一下。这是一个通用的流站点。用户通知他/她想看的几个直播流和他们的时间。这些流可以在网络中的任何地方。在开始时,用户转到播放器页面并播放流(如果它是活动的)。
“如果它是活动的”部分是我在这里想要做的。
解决方案
Icecast 不能正确支持 CORS,因此目前没有通过 Fetch 或 XHR 实现此目的的好方法。
但是,在我看来,您需要做的就是尝试播放流。然后,查看是否发生错误。
const audio = new Audio('https://example.com/stream');
audio.addEventListener('error', () => {
// Stream didn't load, so in all probability it's not online!
});
audio.play(); // This needs to happen on a trusted event, like a click handler, due to autoplay policy
推荐阅读
- ubuntu - 自定义终端以将长 CLI 终端命令映射到短命令
- pine-script - pinescript 如何使在 if 语句中声明的变量全局可用
- x86-64 - 如果程序包含某些 CPU 不支持的指令,会发生什么情况?
- r - Rstudio 终端输出到对象
- java - Hibernate 中的继承与组合
- python - 从另一个文件导入列表
- javascript - React Native Navigation:在另一个文件的函数内部时无法在堆栈之间导航
- python - 如何添加标题并仅使用 plt.figure 摆脱轴
- node.js - React Web 应用程序代理
- python - 如何将 MongoDB ISO UTC 日期与 Python 相互转换