JT1078.Hls
2.6.18 ISO 639 language descripto
24bit
8bit
业务描述服务描述
业务描述符
8bit
8bit
8bit
8bit
ServiceProviderLength
8bit
ServiceNameLenth
取0x50表示包含PCR或0x40表示不包含PCR
注意:关键帧需要加pcr
服务描述类型
运行状态
m3u8文件管理
生成ts和m3u8文件
维护TS文件信息队列
创建M3U8文件
创建TS文件信息
创建TS文件
ts文件路径
文件内容
停止观看直播时清零数据
TS文件信息
ts文件名
持续时间
当前ts文件序号
是否创建ts文件
ts文件第一个jt1078包的时间戳
m3u8配置文件
m3u8文件中默认包含的ts文件数
每个ts文件的最大时长
m3u8文件
hls文件路径(包括m3u8路径,ts路径)
开始码,固定为0x000001
音频取值(0xc0-0xdf),通常为0xc0
视频取值(0xe0-0xef),通常为0xe0
后面pes数据的长度,0表示长度不限制,只有视频数据长度会超过0xffff
通常取值0x80,表示数据不加密、无优先级、备份的数据
ISOIEC13818-1 120页 Table E-1 -- PES packet header example
取值0x80表示只含有pts,取值0xc0表示含有pts和dts
ISOIEC13818-1 120页 Table E-1 -- PES packet header example
根据PTS_DTS_Flag来判断后续长度
后面数据的长度,取值5或10
5B
33bit值
5B
33bit值
音视频数据
固定包长度
固定ES包头的长度
1.SDT
2.PAT
3.PMT
4.PES
取0x50表示包含PCR或0x40表示不包含PCR
1B
JT1078时间戳
第一包的数据、关键帧
Program Clock Reference,节目时钟参考,用于恢复出与编码端一致的系统时序时钟STC(System Time Clock)
5B
填充字节大小
同步字节,固定为0x47
传输错误指示符,表明在ts头的adapt域后由一个无用字节,通常都为0,这个字节算在adapt域长度内
1bit
负载单元起始标示符,一个完整的数据包开始时标记为1
1bit
传输优先级,0为低优先级,1为高优先级,通常取0
1bit
pid值
13bit
传输加扰控制
2bit
是否包含自适应区,‘00’保留;‘01’为无自适应域,仅含有效负载;‘10’为仅含自适应域,无有效负载;‘11’为同时带有自适应域和有效负载。
2bit
递增计数器,从0-f,起始值不一定取0,但必须是连续的
4bit
自适应域长度,后面的字节数
调整字段长度标示,标示此字节后面调整字段的长度,占位8bit;
值为0时,表示在TS分组中插入一个调整字节,后面没有调整字段,紧跟着的是有效负载;
adaptation_field_control == ‘11’时,此值在0 ~182之间,
adaptation_field_control == ‘10’时,此值为183,若字段没这么长则填充0xFF字段;
附加字段
格式节目关联表
PAT表固定为0x00
8bit
固定为二进制1
1bit
固定为二进制0
1bit
固定为二进制3
2bit
后面数据的长度
12bit
传输流ID
16bit
固定为二进制3
2bit
版本号,固定为二进制00000,如果PAT有变化则版本号加1
5bit
固定为二进制1,表示这个PAT表可以用,如果为0则要等待下一个PAT表
1bit
固定为0x00
bit8
固定为0x00
bit8
前面数据的CRC32校验码
节目号为0x0000时表示这是NIT,节目号为0x0001时,表示这是PMT
16bit
固定为二进制111(7)
0b_1110_0000_0000_0000
3bit
节目号对应内容的PID值
13bit
流类型,标志是Video还是Audio还是其他数据,h.264编码对应0x1b,aac编码对应0x0f,mp3编码对应0x03
8bit
固定为二进制111(7)
0b_1110_0000_0000_0000
3bit
与StreamType对应的PID
13bit
固定为二进制1111(15)
0b_1111_0000_0000_0000
4bit
描述信息,指定为0x000表示没有
12bit
格式节目映射表
PMT表取值随意
8bit
固定为二进制1
1bit
固定为二进制0
1bit
固定为二进制3
2bit
后面数据的长度
12bit
频道号码,表示当前的PMT关联到的频道,取值0x0001
16bit
固定为二进制3
2bit
版本号,固定为二进制00000,如果PAT有变化则版本号加1
5bit
固定为二进制1,表示这个PAT表可以用,如果为0则要等待下一个PAT表
1bit
固定为0x00
bit8
固定为0x00
bit8
固定为二进制111(7)
2bit
PCR(节目参考时钟)所在TS分组的PID,指定为视频PID
13bit
固定为二进制1111(F)
4bit
节目描述信息,指定为0x000表示没有
12bit
前面数据的CRC32校验码
业务描述表
表标识符
可以是0x42,表示描述的是当前流的信息,也可以是0x46,表示是其他流的信息
8bit
段语法指示符
1bit
保留未来使用
1bit
保留位,防止控制字冲突,一般是''0'',也有可能是''1''
2bit
段长度 从transport_stream_id开始,到CRC_32结束(包含)
12bit
传输流标识符
同 PAT表中的 TransportStreamId 和PMT表中 ProgramNumber
16bit
保留位
2bit
版本号
标识子表的版本号。当子表包含的信息发生变化时, version_number 加 1。当值增至 31 时,复位为 0。
当 current_next_indicator 置“1”时,则 version_number 为当前使用的子表的版本号。
当 current_next_indicator 置“0”时,则 version_number 为下一个使用的子表的版本号。
5bit
当前后续指示符
当被置“1”时,表示当前子表 正被使用。
当其置“0”时,表示所传子表尚未被使用,它是下一个将被使用的子表。
1bit
段号
子表中的第一个段的 section_number 标 为 “ 0x00 ”。
每增加一个具有相同的 table_id 、 transport_stream_id 和original_network_id 的段,section_number 就加 1。
bit8
最后段号
表示所属的子表的最后一个段(即段号最大的段)的段号。
bit8
原始网络标识符
原始传输系统的 network_id
bit16
保留未来使用位
bit8
前面数据的CRC32校验码
业务描述服务
业务标识符
用于在 TS 流中识别不同的业务。service_id 与program_map_section 中的 program_number 取同一值
16bit
保留将来使用
6bit
EIT 时间表标志
置“1”时,表示业务的 EIT 时间表信息存在于当前 TS 中(一个 EIT 时间表子表两次出现的最大时间间隔信息见 ETR 211)。
置“0”时,表示业务的 EIT 时间表信息不在当前 TS 中
1bit
EIT 当前后续标志
置“1”时,表示业务的 EIT 当前后续信息存在于当前 TS 中(一个 EIT 当前后续子表两次出现的最大时间间隔信息见ETR 211)
置“0”时,表示业务的 EIT 当前后续信息不在当前 TS 中。
1bit
运行状态
对于一个 NVOD 业务,running_status 的值都置“0”
3bit
自由条件接收模式
置“0”时,表示业务的所有组件都未被加扰
置“1”时,表示一路或多路码流的接收由 CA 系统控制。
1bit
描述符循环长度
指出从本字段的下一个字节开始的描述符的总字节长度。
12bit