您如何判断 HTML5 视频是实时流还是只是来自 Javascript 的视频?

Posted

技术标签:

【中文标题】您如何判断 HTML5 视频是实时流还是只是来自 Javascript 的视频?【英文标题】:How do you tell if a HTML5 video is a live stream or just a video from Javascript? 【发布时间】:2019-07-26 07:57:36 【问题描述】:

为 YouTube 创建一个 javascript Chrome 扩展,我想在其中判断视频是实时流还是只是流。

查看html5 documentation,我尝试了ondurationchange,但没有成功。还尝试查看“Live”元素是否在 YouTube HTML 中,但无论如何它似乎总是存在:

var live = document.getElementsByClassName('ytp-live-badge');

【问题讨论】:

直播和直播没有区别。您只需在 HTML 结构中寻找指示即可。 你能得到视频的长度吗?也许您可以获取初始视频长度,然后设置一个定时事件以在几秒钟后再次检查长度,看看它是否改变了? 【参考方案1】:

要检查 YouTube 上的视频是否为直播视频,您已经完成了对 .ytp-live-badge 元素的查询。你只需要检查它是否被禁用:

var liveBadge = document.querySelector('.ytp-live-badge');
var live = liveBadge && !liveBadge.getAttribute('disabled');
console.log(live);

【讨论】:

行得通,谢谢!只是想知道,在 HTML5 API 中是否有一种通用的方法来做到这一点? 不幸的是,我不认为有任何纯 HTML5 方法可以做到这一点。我相信,唯一的区别是也许用于获取数据的协议,这很不稳定(例如,我认为您可以拥有基于 HTTP 的实时流,然后您必须基于文件扩展名的假设)。而且,无论如何,我认为您无法在 YT 上确定这一点,因为 <video> src 是一个 blob: URL,没有任何协议/URL 信息。

以上是关于您如何判断 HTML5 视频是实时流还是只是来自 Javascript 的视频?的主要内容,如果未能解决你的问题,请参考以下文章

如何创建 youtube 视频的实时流?

来自WINDOWS中c ++ opencv应用程序的低延迟视频流[关闭]

仅使用视频标签实时流式传输到 HTML5(没有 webrtc)

来自远程服务器的php流文件

如何保持实时 MediaSource 视频流同步?

将实时视频流式传输到浏览器(低延迟)[关闭]