HLS协议格式
- ES流(Elementary Stream):基本码流,不分段的音频、视频或者其他信息的连续码流
- PES流,把基本码流ES分割成段,并加上相应头文件打包成形的打包基本码流
- PS流(Program Stream):节目流,将具有共同时间基准的一个或者多个PES组合(复合)而成的单一数据流
- TS流(Transport Stream):传输流,将具有共同时间基准或独立时间基准的一个或多个PES组合(复合)而成的单一数据流(用于数据传输)
TS packet格式
- sync_bypte
- 8 bit
- 同步字段,拥有固定的值
- value: 0x47(固定为0x47)
- transport_error_indicator
- 1 bit
- 错误指示字段
- value:1-> 在这个TS packet中至少有一个不正常的位
- payload_unit_start_indicator
- 1bit
- 负载单元开始标志,仅对于携带PES packet和PSI data的TS packet有意义
- PES packet
- 1-> TS packet的有效负载将会从PES packet的第一个字节开始
- 0-> PES packet不会从这个 TS packet开始
- PSI data
- //TODO
- transport_proiority
- 1bit
- 传输优先级
- 1->当前 TS packet相比其它具有相同PID的且该位为0的TS packet拥有更高的优先级
- PID
- 13bit
- 表明存储在TS packet负载中的数据类型
- 0x000 PAT(Program Association Table)表
- 0x001 CAT(Conditional Access Table)表
- transport_scrambling_control
- 2bit
- 加密标志
- 00-> 不加密
- 其余用户定义
- adaptation_field_control
- 2bit
- 这个字段表明TS packet header之后跟随的是adaptation field还是payload
- continuity_counter - 4bit
- 同pid内的TS packet递增
#### Adaptation field
- 调整字段
- 在MPEG-2TS中,为了传送打包后不足188Byte(包括包头)的不完整TS,或者为了在系统层插入节目时钟参考PCR字段,需要在TS包中插入可变长字段的调整字段。调整字段则包括对较高层次的解码功能有用的相关信息,调整字段的格式基于采用若干标志符,以表示该字段的某些特定扩展是否存在。
- adaptation_field_length
- 8bit
- 表示跟随在这个字段之后的adaptation_filed的字节数量
- discontinuity_indicator
- 1bit
- 表明系统时钟基的不连续和continuity_counter的不连续
- random_access_indicator
- 1bit
- 当前的TS数据包,以及可能具有相同PID的后续传输流数据包,都包含一些信息以提供帮助在这一点上随机访问。
- elementary_stream_priority_indicator
- 1bit
- ES流(基本流,即音频or视频这些基本的数据流)的优先级标志位
- 1->当前TS packet携带的负载相比同样PID的TS packet有更高的优先级
- PCR_Flag
- 1bit
- 1->表明当前adaptation field包含一个 PCR field
OPCR_flag - 1bit
- 1->表明当前adaptation field包含一个OPCR field
- splicing_point_flag
- 1bit
- 1->表明当前adaptation field 包含一个splicing point fied
- transport_private_data_flag
- 1bit
- 1->当前adaptation field包含一个或更多的私有数据
- adaptation_field_extension_flag
- 1bit
- 1->表明出现了adaptation 的扩展
- 关于adaptation field 中每一个扩展flag的含义我们后续再看
PES
- 基本流数据
PAT
- PAT表记录了节目号与其对应的PMT表所在的PID值
- 解析过程中我们首先需要解析到PAT表,然后就能知道对应PMT表的pid值,通过这个记录可以知道哪些PID携带的是PMT表。
- PMT
- PMT表记录的是这个节目号对应基本流所在的pid,比如video和audio
参考文献
https://www.cnblogs.com/jiangzhaowei/p/4329187.html
https://blog.csdn.net/u013354805/article/details/51683830
https://www.cnblogs.com/renhui/p/10362640.html