【问题标题】:HTML5 video vs HLS streaming for sharing large VODs用于共享大型 VOD 的 HTML5 视频与 HLS 流
【发布时间】:2022-01-17 19:43:44
【问题描述】:

使用 HLS(HTTP Live Streaming)而不是 HTML5 <video> 共享大型视频文件有什么优势吗?我正在使用ffmpeg 在我的服务器上手动创建块和关联的m3u8 清单文件以共享大型视频文件,并使用hls.js 之类的库将其集成到我的网站中。以前我直接使用<video>标签分享视频文件(例如:<video src="/path/to/some_video.mp4">

我知道 HTML5 视频使用 HTTP 渐进式下载,网络服务器将使用视频文件中的 moov 原子来提供小的渐进式块。另一方面,在 HLS 的情况下,我在服务器端手动创建块,以便我的浏览器可以直接通过 m3u8 清单文件请求它们。我相信 HTML5 视频会导致网络服务器花费额外的 CPU 周期使用 moov 原子对视频进行分块,而在 HLS 情况下,它不会花费任何周期进行分块,并且可以在HTTP 获取。因此,我认为 HLS 在提供视频文件时可能会减少服务器端的 CPU 工作量,因为这些片段是预先分块的。

我不确定这是否属实,我想对此有所了解:使用 HTML5 视频与 HLS 来提供视频文件。

【问题讨论】:

    标签: html nginx web video-streaming html5-video


    【解决方案1】:

    这并不是真正的 HLS 与 HTML5 视频,因为 HLS 通常使用 HTML5 视频。

    HLS 是一种流式传输协议 - 使用 HLS 流式传输到浏览器的视频通常会被组装成一个视频文件,浏览器可以通过第三方 Javascript 播放器(如 video.js 或 Shaka 等)识别该视频文件,并呈现给浏览器中要播放的 HTML5 视频元素。

    图片比较复杂,因为不同的浏览器支持不同,有些可能原生支持HLS。

    HLS 等 ABR 协议的主要优点之一是它们允许您为视频的每个块提供多个比特率版本。这允许客户端根据当前的网络条件和设备为每个块调整和请求不同的比特率。

    对于您的用例,如果您希望用户提前下载完整的文件,那么您可能只对单个比特率感兴趣,但如果您是点播 VOD,HLS 和 DASH 可能是您想要的看着。更多关于 ABR 的信息:https://stackoverflow.com/a/42365034/334402

    【讨论】:

    • 感谢您的回答。我不想让用户从源代码的src 属性中获取我的.mp4 文件。这是我考虑 HLS 的主要原因之一。我以单一比特率流式传输,所以 ABR 不是我主要关心的问题。 HLS 使大多数人难以盗取视频(大多数,因为少数人会花费更多时间从 m3u8 文件中保存视频)。我知道还有其他技术,例如 CSRF 令牌、右键单击禁用,但与使用 JS 的右键单击禁用相比,HLS 似乎更易于设置(与 CSRF 相比)和安全。
    猜你喜欢
    • 2015-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    • 2017-09-03
    • 1970-01-01
    相关资源
    最近更新 更多