网站模板 响应式,怎么在网上做公司网站,iis wordpress固定链接404,wordpress 会员功能基本原理
HLS协议通过将视频文件切分成多个小的媒体段#xff08;通常是10秒左右的.ts文件#xff09;#xff0c;并通过HTTP传输给客户端。视频播放过程中#xff0c;客户端按顺序请求这些小段文件来逐步播放整个视频流。HLS还支持多种码率#xff0c;以便适应不同网络条…基本原理
HLS协议通过将视频文件切分成多个小的媒体段通常是10秒左右的.ts文件并通过HTTP传输给客户端。视频播放过程中客户端按顺序请求这些小段文件来逐步播放整个视频流。HLS还支持多种码率以便适应不同网络条件的动态调整自适应流。
工作流程
HLS协议的基本工作流程包含以下几个步骤
视频切片 视频源文件通常是一个完整的长视频。视频文件被切割成若干个小的TS文件MPEG-TS格式通常每个视频片段持续10秒或更短。这些切片.ts文件被存储在服务器上。 生成M3U8播放列表 在切片完成后生成一个以.m3u8为扩展名的播放列表文件里面包含了TS片段的URL客户端通过这个播放列表来加载视频片段。.m3u8文件本质上是一个文本文件列出了所有视频片段或称“媒体段”的URL地址浏览器或播放器根据它来依次请求视频片段。还可以生成多种码率的M3U8文件每种码率对应不同的网络条件。 客户端请求和播放 客户端如HLS支持的播放器或浏览器请求.m3u8文件播放器读取该文件并获取其中包含的视频片段链接。客户端根据当前网络状况自动选择合适的码率进行播放。如果网络环境发生变化播放器可以切换不同的码率流。
M3U8播放列表文件
M3U8文件是HLS的核心部分它是一个UTF-8编码的播放列表描述了视频段和相关的元数据。主要有两种类型的M3U8文件
主播放列表Master Playlist列出不同码率、不同分辨率的视频流。媒体播放列表Media Playlist每个流一个码率都有一个对应的媒体播放列表列出具体的.ts文件。
基本结构
一个标准的 .m3u8 文件包含一系列以 #EXT 开头的扩展标记例如#EXT-X-VERSION、#EXT-X-TARGETDURATION 等和媒体段视频片段的 URL 链接。每个 .m3u8 文件包含的信息对播放流程至关重要通常分为以下几种类型
播放列表头部Header定义播放器需要遵循的基本规则。媒体段Media Segments指向具体的视频片段.ts 文件的链接。播放列表尾部Footer包括结束标记等。
格式解析
头部信息
头部一般包含一些关于播放列表的全局信息比如版本、最大时长等。
#EXTM3U: 每个 .m3u8 文件必须以这个标签开头标识这是一个M3U播放列表。#EXT-X-VERSION:version: 表示M3U8文件的版本号。版本号决定了该播放列表支持的特性。例如#EXT-X-VERSION:3 表示使用 HLS 版本 3。#EXT-X-TARGETDURATION:duration: 定义了每个媒体段的最大持续时间单位为秒。客户端用它来确定如何预缓存下一段内容。例如#EXT-X-TARGETDURATION:10 表示每个段的最大持续时间为 10 秒。#EXT-X-MEDIA-SEQUENCE:sequence_number: 指定媒体片段的起始序列号。每个媒体段的序号是递增的通常从 0 开始。
媒体片段信息
每个媒体段视频或音频片段会在 .m3u8 文件中用 #EXTINF 标签标注它表示该片段的持续时间单位为秒以及片段的文件名或URL。
#EXTINF:duration,: 这个标签后跟的是该视频片段的持续时间以秒为单位。例如#EXTINF:10.0, 表示该片段的持续时间为 10 秒。media_segment_file: 这部分指向媒体段文件的位置通常是 .ts 文件的 URL。例如segment1.ts 或 https://example.com/segment1.ts。
例如
#EXTINF:10.0,
segment1.ts
#EXTINF:10.0,
segment2.ts
#EXTINF:10.0,
segment3.ts多码率支持自适应流
如果是一个支持多码率或称自适应流的 .m3u8 文件则会包含多个播放列表每个播放列表对应一个不同的码率或分辨率的视频流。
#EXT-X-STREAM-INF:: 这是主播放列表中的一行标识一个子播放列表并提供了相关的编码信息如码率、分辨率等。BANDWIDTHbandwidth: 指定该流的带宽需求通常是以比特为单位。例如BANDWIDTH800000 表示这个流的带宽是 800 Kbps。RESOLUTIONwidthxheight: 指定视频的分辨率例如 RESOLUTION1920x1080。
主播放列表文件会列出不同码率、不同分辨率的子播放列表链接。例如
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-STREAM-INF:BANDWIDTH800000,RESOLUTION640x360
low_quality.m3u8
#EXT-X-STREAM-INF:BANDWIDTH1400000,RESOLUTION1280x720
medium_quality.m3u8
#EXT-X-STREAM-INF:BANDWIDTH2800000,RESOLUTION1920x1080
high_quality.m3u8结束标记
#EXT-X-ENDLIST: 这个标记表示播放列表的结束特别用于点播VOD场景表明媒体播放列表已结束后续没有更多的媒体段。
加密与内容保护
#EXT-X-KEY: 用于指定加密信息提供加密内容的密钥信息。例如HLS支持AES-128加密文件中的加密信息可以指定密钥的位置等
示例
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0#EXT-X-STREAM-INF:BANDWIDTH800000,RESOLUTION640x360
low_quality.m3u8#EXT-X-STREAM-INF:BANDWIDTH1400000,RESOLUTION1280x720
medium_quality.m3u8#EXT-X-STREAM-INF:BANDWIDTH2800000,RESOLUTION1920x1080
high_quality.m3u8低码率流 (low_quality.m3u8) 示例
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:10.0,
segment1.ts
#EXTINF:10.0,
segment2.ts
#EXTINF:10.0,
segment3.ts
#EXT-X-ENDLIST常见的 .m3u8扩展标签 #EXT-X-DISCONTINUITY: 标记媒体段之间的时间戳或编码格式的不连续性。通常在不同的编码流之间使用。 #EXT-X-PROGRAM-DATE-TIME: 指定播放列表中某个时间点的实际日期和时间。 #EXT-X-ALLOW-CACHE:YES|NO: 指定客户端是否可以缓存媒体文件。
hls的特性 自适应流HLS支持多个不同码率的视频流客户端根据当前带宽情况自动切换最佳码率提供更好的观看体验。 跨平台支持HLS是基于HTTP协议因此可以通过任何支持HTTP的客户端播放。它也得到广泛的浏览器和设备的支持如iOS、Android、macOS、Windows等。 实时直播支持HLS协议不仅支持视频点播VOD还可以支持实时直播流。 广泛的CDN兼容性因为HLS使用HTTP协议它可以很容易地通过内容分发网络CDN进行分发确保高效的视频传输。 内容保护HLS支持加密流提供了对视频内容的保护确保视频播放时不会被未经授权的用户访问。
hls的特点
优点
易于部署HLS通过HTTP进行流媒体传输几乎可以与任何Web服务器兼容并且不需要特定的协议或协议支持。广泛支持由于它是由苹果公司提出的因此特别适用于iOS和macOS设备。此外越来越多的浏览器和设备也支持HLS。自适应比特率根据网络条件动态调整视频质量避免播放卡顿。
缺点
延迟较高HLS的延迟相对较高尤其是实时直播场景中。通常会有15到30秒的延迟虽然可以通过减少每段视频的长度来降低延迟但代价是增加了请求次数和带宽消耗。效率问题相比其他协议如DASHHLS的传输效率相对较低特别是在高清和超高清视频内容中。视频切片的管理在需要快速变化的直播场景中视频切片的管理和更新可能会带来额外的复杂性。
HLS与其他流媒体协议对比
与RTMPReal-Time Messaging Protocol
HLS协议更适合基于HTTP传输的流媒体应用并且具有较高的可扩展性。而RTMP主要用于低延迟的直播通常在直播场景下使用较多。HLS的延迟比RTMP要高。
与DASHDynamic Adaptive Streaming over HTTP
DASH协议类似于HLS也是基于HTTP的自适应流传输协议。DASH的优势是开源、标准化且支持更细粒度的控制但在设备兼容性上可能不如HLS广泛。
常见应用 视频点播VODHLS非常适合点播视频内容特别是在需要跨多个平台如iOS、Android、Web等播放时。 实时直播通过HLS进行直播时可以将直播内容分割成多个小片段逐步传输给观众。 视频监控在一些视频监控应用中HLS可以作为一种流媒体传输协议用于将实时视频传输到监控平台或服务器。