视频流传输的基础学习

实现视频缓存机制

在笔者学习的移动应用开发这门课中,有一个实验要求实现视频播放器七上八下,开屏秒弹的功能。视频资源可从视频网站获取链接。

image-20251127141333976

通过观察主流的视频网站发现,视频媒体是以分片形式实时传输获取拼接的。这就是流式传输

通过调用用户浏览器进行URL.createObjectURL()为内存中的数据创建一个临时引用。
页面的渲染js负责将分片视频拼接在一起,这是正常的DRM和防盗链机制。

流式传输

流式传输是一种通过 Internet 传递数据而无需使最终用户完整下载数据的方法。实时流式传输是一种流式传输,其中流是通过 Internet 实时发送的,而无需首先进行录制和存储。

什么是视频编码?

视频编码是压缩视频数据的过程,以便其高效地发送到其他位置。流的接收端设备(例如,用户观看其喜爱的电视节目的平板电脑)对编码数据进行解码。视频编码遵循众所周知的标准,因此各种设备都可以解释编码后的流。

视频编码的必要性源于两大原因:

  1. 未压缩的视频文件通过 Internet 发送的用时太长,无法进行流式传输。
  2. 视频必须采用任何用户设备(智能手机、笔记本电脑和 PC 等)可以解释的格式。

在视频实时流中,设备会获取视听输入并进行编码,然后将其全部发送给观众。此过程的编码部分对于允许各种用户设备接收和播放视频至关重要。常采用H.264编码标准进行编码。

具体可以参考这篇文章

image-20251127164313598

HTTP实时流(HLS)--一种流协议

HTTP 实时流(HLS)是使用最广泛的视频协议之一。尽管它称为 HTTP“实时”流,但它同时适用于点播流和实时流。HLS 将视频文件分解为较小的可下载 HTTP 文件,并使用 HTTP 协议来交付。客户端设备加载这些 HTTP 文件,然后将它们作为视频进行播放。

HLS 的一个优点是,所有连入互联网的设备都支持 HTTP,因而它比需要使用专用服务器的流协议更易于实施。另一个优点是 HLS 流可以根据网络状况提高或降低视频质量,而不会中断播放。这就是在用户观看视频的过程中视频质量可能会变好或变差的原因。这个功能称为“自适应比特率视频传输”或“自适应比特率流式传输”,如果没有它,慢速网络条件可能导致视频播放完全停止。

HLS 由 Apple 为 Apple 产品开发,但现在已广泛用于许多设备。

HLS如何工作?

服务器:HLS 流源自于服务器,其中存储了媒体文件(在点播流式传输中)或创建了流(在实时流式传输中)。因为 HLS 基于HTTP,所以任何普通的 Web 服务器都可以发起流。

服务器上发生两个主要过程:

  1. 编码:重新格式化视频数据,以便任何设备都能识别和解析数据。HLS 必须使用 H.264 或 H.265 编码。

  2. 分段:

    视频分成长度为几秒钟的片段。片段长度可变,但默认长度为 6 秒(2016 年为止是 10 秒)。

    • 除了将视频分割为片段外,HLS 还创建视频片段的索引文件,以记录它们所属的次序。
    • HLS 还会创建几组不同质量等级的重复片段:480p、720p 和 1080p 等。

分发:当客户端设备请求流时,已编码的视频段通过互联网推送到客户端设备。通常,内容交付网络 (CDN) 可以协助将流分发到地理上不同的区域。CDN 还可以缓存流,从而更快地将流提供给客户端

客户端设备:客户端设备是接收流并播放视频的设备,例如用户的智能手机或笔记本电脑。客户端设备使用索引文件作为参考,以正确的顺序组装视频,并根据需要从更高质量影像切换到低质量影像(反之亦然)。

posted @ 2026-06-02 11:07  tre2e  阅读(7)  评论(0)    收藏  举报