HLS协议三个关键角色

举报
周杰伦本人 发表于 2025/07/30 13:53:29 2025/07/30
【摘要】 HLS协议三个关键角色说到 HLS 协议,还要说一下PAT (Program Association Table)、PMT (Program Map Table) 和 PES (Packetized Elementary Stream) 这三个巨头,它们在 HLS 协议中起着非常重要的作用,尤其是在处理 TS (Transport Stream) 文件时。 一  PAT (Program A...

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 的工作原理

  1. 播放器请求 m3u8 文件:播放器首先请求 m3u8 文件,获取直播流的索引信息。

  2. 播放器下载 TS 文件:根据 m3u8 文件中的索引,播放器依次下载各个 TS 文件。

  3. 解析 PAT:播放器解析 TS 文件,找到 PAT 表。

  4. 找到 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 的工作原理

  1. 播放器找到 PMT 的 PID:播放器根据 PAT 表找到 PMT 表的 PID。

  2. 解析 PMT:播放器解析 PMT 表,找到视频和音频流的 PID。

  3. 找到视频和音频流:播放器根据 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 的工作原理

  1. 播放器找到视频和音频流的 PID:播放器根据 PMT 表找到视频和音频流的 PID。

  2. 解析 PES 包:播放器解析 TS 文件,找到对应的 PES 包。

  3. 提取视频和音频数据:播放器从 PES 包中提取视频和音频数据,进行解码和播放。

实际应用中的流程

(一)播放器的请求过程

  1. 请求 m3u8 文件:播放器首先请求 m3u8 文件,获取直播流的索引信息。

  2. 下载 TS 文件:根据 m3u8 文件中的索引,播放器依次下载各个 TS 文件。

  3. 解析 PAT:播放器解析 TS 文件,找到 PAT 表。

  4. 找到 PMT 的 PID:PAT 表告诉播放器 PMT 表的 PID,播放器根据这个 PID 找到 PMT 表。

  5. 解析 PMT:播放器解析 PMT 表,找到视频和音频流的 PID。

  6. 解析 PES 包:播放器解析 TS 文件,找到对应的 PES 包。

  7. 提取视频和音频数据:播放器从 PES 包中提取视频和音频数据,进行解码和播放。

(二)实际演示

为了更好地理解这个过程,我们可以通过实际演示来观察这个过程。

  1. 打开 Safari 浏览器:Safari 浏览器原生支持 HLS 协议,可以直接播放 m3u8 文件。

  2. 访问直播地址:将直播的 m3u8 文件地址粘贴到浏览器地址栏中,回车。

  3. 观察网络请求:打开开发者工具,切换到网络面板,观察播放器的请求过程。

  • 首先请求 m3u8 文件。

  • 根据 m3u8 文件中的索引,依次请求各个 TS 文件。

  • 解析 TS 文件,找到 PAT 表。

  • 根据 PAT 表找到 PMT 表的 PID。

  • 解析 PMT 表,找到视频和音频流的 PID。

  • 解析 PES 包,提取视频和音频数据。

四 总结

根据上面的介绍 我们知道 PAT PMT和PES在HLS协议中占有着重要的地位,理解了这三个部分,我们才能更好的理解HLS协议的工作原理。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。