HLS协议三个关键角色
HLS协议三个关键角色
说到 HLS 协议,还要说一下PAT (Program Association Table)、PMT (Program Map Table) 和 PES (Packetized Elementary Stream) 这三个巨头,它们在 HLS 协议中起着非常重要的作用,尤其是在处理 TS (Transport Stream) 文件时。
一 PAT (Program Association Table)
(一)PAT 的作用
PAT 是一个非常重要的表,它告诉播放器如何找到其他重要的表,比如 PMT。PAT 的主要作用是提供一个映射,告诉播放器在哪里可以找到 PMT。
(二)PAT 的结构
PAT 是一个表,它包含了一些关键信息:
-
Table ID:标识这是一个 PAT 表。
-
Transport Stream ID:标识当前的传输流。
-
Program Number:标识一个特定的节目。
-
PID (Packet Identifier):标识 PMT 表的 PID。
(三)PAT 的工作原理
-
播放器请求 m3u8 文件:播放器首先请求 m3u8 文件,获取直播流的索引信息。
-
播放器下载 TS 文件:根据 m3u8 文件中的索引,播放器依次下载各个 TS 文件。
-
解析 PAT:播放器解析 TS 文件,找到 PAT 表。
-
找到 PMT 的 PID:PAT 表告诉播放器 PMT 表的 PID,播放器根据这个 PID 找到 PMT 表。
二 PMT (Program Map Table)
(一)PMT 的作用
PMT 是一个非常重要的表,它告诉播放器如何解析 TS 文件中的视频和音频流。PMT 的主要作用是提供一个映射,告诉播放器哪些 PID 对应视频流,哪些 PID 对应音频流。
(二)PMT 的结构
PMT 是一个表,它包含了一些关键信息:
-
Table ID:标识这是一个 PMT 表。
-
Program Number:标识一个特定的节目。
-
Stream Type:标识流的类型(视频或音频)。
-
Elementary PID:标识视频或音频流的 PID。
(三)PMT 的工作原理
-
播放器找到 PMT 的 PID:播放器根据 PAT 表找到 PMT 表的 PID。
-
解析 PMT:播放器解析 PMT 表,找到视频和音频流的 PID。
-
找到视频和音频流:播放器根据 PMT 表中的 PID,找到对应的视频和音频流。
三、PES (Packetized Elementary Stream)
(一)PES 的作用
PES 是一个封装了基本流(视频或音频)的包。PES 的主要作用是将视频和音频流封装成一个个包,方便传输和解析。在直播流的传输过程中,视频和音频数据需要被妥善封装,以便在复杂的网络环境中进行高效、稳定的传输。这就如同在运输易碎物品时,需要将它们放入坚固的包装盒中一样。PES(Packetized Elementary Stream)就是承担这一重要任务的角色,它将视频和音频流封装成一个个独立的包,方便传输和解析,确保媒体数据能够完整、准确地到达播放器端。
(二)PES 的结构
PES 是一个包,它包含了一些关键信息:
-
Packet Start Code:标识一个 PES 包的开始。
-
Stream ID:标识流的类型(视频或音频)。
-
Packet Length:标识包的长度。
-
Payload:实际的视频或音频数据。
(三)PES 的工作原理
-
播放器找到视频和音频流的 PID:播放器根据 PMT 表找到视频和音频流的 PID。
-
解析 PES 包:播放器解析 TS 文件,找到对应的 PES 包。
-
提取视频和音频数据:播放器从 PES 包中提取视频和音频数据,进行解码和播放。
实际应用中的流程
(一)播放器的请求过程
-
请求 m3u8 文件:播放器首先请求 m3u8 文件,获取直播流的索引信息。
-
下载 TS 文件:根据 m3u8 文件中的索引,播放器依次下载各个 TS 文件。
-
解析 PAT:播放器解析 TS 文件,找到 PAT 表。
-
找到 PMT 的 PID:PAT 表告诉播放器 PMT 表的 PID,播放器根据这个 PID 找到 PMT 表。
-
解析 PMT:播放器解析 PMT 表,找到视频和音频流的 PID。
-
解析 PES 包:播放器解析 TS 文件,找到对应的 PES 包。
-
提取视频和音频数据:播放器从 PES 包中提取视频和音频数据,进行解码和播放。
(二)实际演示
为了更好地理解这个过程,我们可以通过实际演示来观察这个过程。
-
打开 Safari 浏览器:Safari 浏览器原生支持 HLS 协议,可以直接播放 m3u8 文件。
-
访问直播地址:将直播的 m3u8 文件地址粘贴到浏览器地址栏中,回车。
-
观察网络请求:打开开发者工具,切换到网络面板,观察播放器的请求过程。
-
首先请求 m3u8 文件。
-
根据 m3u8 文件中的索引,依次请求各个 TS 文件。
-
解析 TS 文件,找到 PAT 表。
-
根据 PAT 表找到 PMT 表的 PID。
-
解析 PMT 表,找到视频和音频流的 PID。
-
解析 PES 包,提取视频和音频数据。
四 总结
根据上面的介绍 我们知道 PAT PMT和PES在HLS协议中占有着重要的地位,理解了这三个部分,我们才能更好的理解HLS协议的工作原理。
- 点赞
- 收藏
- 关注作者
评论(0)