mpegts流解析
MPEG-TS一种标准数据容器格式,传输与存储音视频、节目与系统信息协议数据,应用于数字广播系统,譬如DVB,ATSC与IPTV。传输流在MPEG-2第1部分系统中规定,正式称为ISO / IEC标准13818-1或ITU-T建议书[1]。
MPEG2/DVB是一种多媒体传输、复用技术,在数字电视广播中可提供数百个节目频道。复用的含义是,可以同时传输多层节目。
#二.TS介绍
一路TS比特流通常由连续的固定字节的TS包组成,所包含的内容有:
一路或多路视频流(多个PES包组成,每个PES包的PID是一致的,一个PES包可能由若干个TS包组成)
一路或多路音频流(通常为杜比的音频格式)
一路或多路字幕
PSI表格信息(Program Specific Information,包括PAT与PMT表,即节目关联表与节目映射表)
PES: Packetized Elementary Stream,一路基本码流(如MEPG2视频流)会在编码器端被打包成PES流,由多个PES包组成,打包的过程中主要加入了PTS/DTS信息。
注意,就一般的视频流而言,只要拼接成一个完整的PES包,就可以送出去给解码器,然后再继续拼接下一个PES包。
什么是ES流,PES流,TS流?
ES流:有三种,图像数据流,音频数据流,以及其他编码数据流。
PES流:PES流是ES流经过PES打包器处理后形成的数据流,在这个过程中完成了将ES流分组、打包、加入包头信息等操作(对ES流的第一次打包)。PES流的基本单位是PES包。
TS流:由定长的TS包组成(188字节),而TS包是对PES包的一个重新封装(到这里,ES经过了两层的封装) 。应用于相对有错环境下的传输与存储(如DVB中),其基本单位是TS包,长度固定188字节。日本的DVB-S广播系统采用192个字节的TS包,美国采用204个字节的TS包,多加了16个字节的前向纠错校验码(FEC)。
Fig. 1. ES流打包成PES流(来自未知原始出处的网络资料TS码流结构分析[3])
什么是PSI表?
PSI,节目特定信息,该表格信息用来描述传送流的组成结构。PSI信息由四种类型的表组成,包括节目关联表(PAT),节目映射表(PMT),条件接收表(CAT),网络信息表(NIT)。PAT与PMT两张表帮助我们找到该传送流中的所有节目与流,PAT告诉我们,该TS流由哪些节目组成,每个节目的节目映射表PMT的PID是什么,而PMT告诉我们,该节目由哪些流组成,每一路流的类型与PID是什么。CAT与NIT暂时不考虑。