抖音TS音视频流的探索
1、什么是TS
原文:
图1-1
图1-2
翻译:
TS流是一种根据H.262|ISO/IEC13818-2和ISO/IEC13818-3以及其他可能发生重大错误的环境中的数据而定义的流,它专为一个或多个节目的编码数据通信或存储定制。这种错误可以表现为位值错误或数据包的丢失。
翻译图1-1
TS流将具有一个或多个独立时基的一个或多个节目组合成单个流。
翻译图1-2
理解:
TS是将一个或多个节目复合成单一的流。
2、TS流的结构
原文:
图2-1
翻译:无
理解:
由图2-1看出TS流是由一个个包组成。每个包又分成头部header和负载payload。
3、什么是TS包
原文:
!
图3-1
图3-2
图3-3
翻译:
TS流数据包以一个4字节的前缀开始,该前缀包含表2-2中定义的13位数据包ID(PID)。PID通过程序特定信息(PSI)表识别传输流数据包中包含的数据内容。一个PID值的TS流包携带一个且仅一个基本流的数据。
翻译图3-1
payload:payload指的是数据包中报头字节后面的字节。例如,某些传输流数据包的有效负载包括PES_packet_header及其PES_packet_data_bytes、pointer_field和PSI部分或私有数据;但PES_packet_payload只包含PES_packet_data_bytes。传输流数据包报头和自适应字段不是有效负载。
翻译图3-3
理解:
由图3-2可以看出TS包由头部header和负载payload组成,
其中header的组成部分如下图示意:
其中payload又含有PES_packet_header(PES包头)和PES_packet_data_bytes(PES包的数据),指针域,
私有数据,PSI sections五个部分组成。
4、TS包长?
原文:
翻译:
传输流数据包的长度为188字节。
理解:
正常的包有188个字节,文档缺失了一种情况,有种特殊的包是在原 188字节的尾部再加 16 个字节作为校验位,用于校验前188字节传输正确,有204个字节。
所以ts包长是 188 或 204
包头4个字节的理解如下:
由方法体里的字段可以统计出32位,转换后为4字节。
5、什么是ES
原文:
图5-1
翻译:
ES(系统):编码视频、编码音频或其他编码位之一的通用术语,PES报文流。一个基本流以一个且只有一个stream_id的PES报文序列携带。
翻译图5-1
理解:
ES是一个音视频基本流。
6、什么是PES?
原文:
图6-1
图6-2
翻译:
ES流被打包后的缩写。
PES流(系统):PES流由PES包组成,所有payload都由来自单个ES流的数据组成,所有这些数据都具有相同的stream_id。此时将应用特定的语义约束。请参考TITU-TRec。H.222.0 | ISO/IEC 13818-1.
理解:
ES里分为多个PES流,PES里又含有packet header和packet data两个部分
7、PES放在哪里?
原文:
图7-1
翻译:
payload:payload指的是数据包中报头字节后面的字节。例如,某些传输流数据包的有效负载包括PES_packet_header及其PES_packet_data_bytes、pointer_field和PSI部分或私有数据;但PES_packet_payload只包含PES_packet_data_bytes。TS流数据包报头和自适应字段不是payload。
翻译图7-1
理解:
的字节。例如,某些传输流数据包的有效负载包括PES_packet_header及其PES_packet_data_bytes、pointer_field和PSI部分或私有数据;但PES_packet_payload只包含PES_packet_data_bytes。TS流数据包报头和自适应字段不是payload。
翻译图7-1
理解:
PES包被放在TS包的payload中.