TS文件什么意思(ts的格式)
TS文件什么意思(ts的格式),新营销网红网本栏目通过数据整理汇集了TS文件什么意思(ts的格式)相关信息,下面一起看看。
1.ts格式TS介绍全称为MPEG2-TS。TS传输流的缩写。是分包发送的,每个包长188字节(也有192和204字节的包)。数据包的结构是,报头是4个字节(第一个字节是0x47),有效载荷是184个字节。TS流可以填充许多类型的数据,例如视频、音频、定制信息等。MPEG-2 TS主要用于实时传输节目,如实时广播电视节目。MPEG-2 TS格式的特点是要求视频流的任何一段都可以独立解码。简单来说,剪掉DVD上VOB文件的前部(或者数据损坏)会导致整个文件无法解码,而电视节目只要打开电视就可以解码(观看)。
2.TS流的内容TS流必须包含PAT包、PMT包、多个音频包、多个视频包、多个PCR包和其他信息包。
TS流数据解析的流程找到PID为0x0的包,解析PAT,PAT包中的program_map_PID表示PMT的PID;找PMT。PMT包中的elementary_PID表示音视频包的PID,PMT包中的PCR_PID表示PCR的PID。有时PCR的PID与音频或视频的PID相同,说明PCR会被集成到音频和视频包中。注意分析,有时候PCR是自己单独的包。CAT、NIT、SDT和EIT的PID分别为0x01、0x10、0x11和0x12。
3.TS头分析TS头有4个字节。
//transportstreamheadertypedefstructs _ header { unsignedsync _ byte :8;//同步字节,固定为0x47,表示后面是TS包。后面面包里的数据是无符号transport _ error _ indicator 33601没有0x47//传输错误标志位。一般情况下,如果出现传输错误,此数据包将不会被处理。无符号有效载荷_单元_开始_指示符33601;//有效载荷的开始标志根据后面有效载荷的内容有不同的作用。//当payload _ unit _ start _ indicator为1时,前4个字节后会有一个调整字节,其值决定了净荷内容的具体起始位置。unsignedtransport _ priority :1;//传输优先级位,1表示高优先级unsignedPID:13//净荷数据类型为无符号transport _ scrambling _ control 33602;//加密标志位,00表示未加密未签名adaptation _ field _ control33602//调整字段控件,01仅包含有效载荷,10仅包含调整字段,11包含调整字段和有效载荷。00,解码器不会对其进行处理。unsigned continuity _ counter :4;//4-4位计数器,范围0-15 } TS _ header;//特殊参数描述//sync _ byte:0x 47//payload _ unit _ start _ indicator:0x 01表示包含PSI或PES头。//PID:0x0表示后面的载荷内容是PAT,不同的PID代表不同的载荷。//adaptation _ field _ control://0x 03360//ReservedForFutureusebyiso/IEC//0x 1://无调整字段,只有净荷//0x2://只有调整字段,没有净荷//0x3://净荷//parsetsheiderrintservice _ ts _ header(unsigned char pts buf,ts _ header p header){ p header-sync _ byte=pts buf[0];if(pheader- sync_byte!=0x47)返回-1;p header-transport _ error _ indicator=pts buf[1]7;p header-payload _ unit _ start _ indicator=pts buf[1]60x 01;p header-transport _ priority=pts buf[1]50x 01;p header-PID=(pts buf[1]0x1F)8
pts buf[2];p header-transport _ scrambling _ control=pts buf[3]6;p header-adaption _ field _ control=pts buf[3]40x 03;p header-continuity _ counter=pts buf[3]0x0F;return0}4.TS有效载荷格式分析4.1 PAT分析
接收音频和视频开发学习材料https://docs.qq.com/doc/DQm1VTHBlQmdmTlN2
TS_header头中的PID值为0x0,表示当前负载为PAT(程序关联表)。PAT数据的信息可以理解为包含在整个TS流中的节目信息。
//ProgramAssociationTabletypedefstructPAT _ Packet _ tag { unsigned table _ id :8;//固定为0x00,标志为表为PatunsignedSection _ syntax _ indicator 33601;//段语法标志位,固定为1unsignedzero:1//0 unsignedreserved _ 1:2;//保留位未签名
dsection_length:12;//表示有用的字节数,包括CRC32unsignedtransport_stream_id:16;//该传输流的ID,区别于一个网络中其它多路复用的流unsignedreserved_2:2;//保留位unsignedversion_number:5;//范围0-31,表示PAT的版本号unsignedcurrent_next_indicator:1;//发送的PAT是当前有效还是下一个PAT有效unsignedsection_number:8;//分段的号码。PAT可能分为多段传输,第一段为00,以后每个分段加1,最多可能有256个分段unsignedlast_section_number:8;//一个分段的号码//for(i=0;i i++)//{unsignedprogram_number:16;unsignedreserved_3:3;unsignednetwork_PID:13;//或者program_map_PID/