欢迎来到天天文库
浏览记录
ID:42447986
大小:131.73 KB
页数:5页
时间:2019-09-15
《关于TS流的解析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、关于TS流的解析TS即是'TransportStream**的缩写。他是分包发送的,每一个包长为188字节。在TS流里可以填入很多类型的数据,如视频、音频、H定义信息等。他的包的结构为,包头为4个字节,负载为184个字节(这184个字节不一定都是有效数据,有一些可能为填充数据)。工作形式:因为在TS流里可以填入很多种东西,所以有必要有一种机制來确定怎么來标浜这些数据。制定TS流标准的机构就规定了一些数据结构來定义。比如:PSI(ProgramSpecificInformation)衣,所以解析起來就像这样:先接收一个负载
2、里为PAT的数据包,在整个数拯包里找到一个PMT包的ID。然后再接收一个含有PMT的数協包,在这个数拯包里找到有关填入数据类型的ID。Z后就在接收到的TS包里找含有这个ID的负载内容,这个内容就是填入的信息。根据填入的数据类烈的ID的不同,在TS流复合多种信息是可行的。关键就是找到标识的ID号。现在以一个例子來说明具体的操作:在开始Z前先给出一片实际•TS流例子:0000f32ch474000170000B00D0001C100000001E0;G@..0000f33ch20A2C32941FFFFFFFFFFFFFFF
3、FFFFFFF;19.)A0000f34chFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF;0000f35chFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF;0000f36chFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF;0000f37chFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF;0000f38chFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF;0000f39chFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
4、F;0000f3achFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF;0000f3bchFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF;0000f3cchFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF;0000f3dchFFFFFFFFFFFFFFFFFFFFFFFF47402017;G@.0000f3ech0002B01B0001C10000E021F0001BE021;0000f3fch:F0042A027E1F03E022F0005D16BD48;?*.-..?
5、?].紿具体的分析就以这个例子來分析。//AdjustTSpacketheadervoidadjust_TS_packet_header(TS_packet_header*pheader){unsignedcharbuf[4];memcpy(buf,pheader,4);pheader->transport_error_indicator=buf[1]>>7;pheader->payload_unit_start_indicator=buf[1]>>6&0x01;pheader・>transport_priority=b
6、uf[1]>>5&0x01;pheader->PID=(buf[1]&0x1F)<<8
7、buf[2];pheader・>transport_scrambling_control=buf[3]>>6;pheader->adaption_field_control=buf[3]>>4&0x03;pheader->continuity_counter=buf[3]&0x03;}这是一个调整TS流数据包头的两数,这里牵扯到位段调整的问题。现在看一下TS流数据包头的结构的定义://Transportpacketheadertype
8、defstructTS_packet_headerunsignedsync_byte:8;unsignedtransport_error_indicator:1;unsignedpayload_unit_start_indicator:1;unsignedtransport_priority:1;unsignedPID:13;unsignedtransport_scrambling_control:2;unsignedadaption_field_control:2;unsignedcontinuity_counter:
9、4;}TS_packet_header;F面我们来分析,在ISO/IEC13818-1里有说明,PAT(ProgramAssociationlable)的PID值为0x00,TS包的标识(即sync_byte)为0x47,并且为了确保这个TS包里的数据有效,所以我们一开始查找474000这三纽16进制数,为什么这样?
此文档下载收益归作者所有