左右TS分析流

时间:2022-02-02 10:58:29

字节。在TS流里能够填入非常多类型的数据。如视频、音频、自己定义信息等。他的包的结构为,包头为4个字节,负载为184个字节(这184个字节不一定都是有效数据。有一些可能为填充数据)。

工作形式: 
由于在TS流里能够填入非常多种东西,所以有必要有一种机制来确定怎么来标识这些数据。制定TS流标准的机构就规定了一些数据结构来定义。

比方: PSI(Program Specific Information)表,所以解析起来就像这样: 先接收一个负载里为PAT的数据包。在整个数据包里找到一个PMT包的ID。

然后再接收一个含有PMT的数据包,在这个数据包里找到有关填入数据类型的ID。之后就在接收到的TS包里找含有这个ID的负载内容,这个内容就是填入的信息。

依据填入的数据类型的ID的不同,在TS流复合多种信息是可行的。关键就是找到标识的ID号。

如今以一个样例来说明详细的操作:
在開始之前先给出一片实际TS流样例: 
0000f32ch: 47 40 00 17 00 00 B0 0D 00 01 C1 00 00 00 01 E0 ; G@....?..?...?

0000f33ch: 20 A2 C3 29 41 FF FF FF FF FF FF FF FF FF FF FF ;  ⒚)A
0000f34ch: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; 
0000f35ch: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; 
0000f36ch: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; 
0000f37ch: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; 
0000f38ch: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; 
0000f39ch: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; 
0000f3ach: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; 
0000f3bch: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; 
0000f3cch: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; 
0000f3dch: FF FF FF FF FF FF FF FF FF FF FF FF 47 40 20 17 ; G@ .
0000f3ech: 00 02 B0 1B 00 01 C1 00 00 E0 21 F0 00 1B E0 21 ; ..?..?.??.?

0000f3fch: F0 04 2A 02 7E 1F 03 E0 22 F0 00 5D 16 BD 48    ; ?*.~..?

?

].紿

详细的分析就以这个样例来分析。
左右TS分析流
];
    memcpy(buf, pheader, );
    pheader->transport_error_indicator        = buf[] >> ;
    pheader->payload_unit_start_indicator    = buf[] >>  & ] >>  & ] &  | buf[];
    pheader->transport_scrambling_control    = buf[] >> ;
    pheader->adaption_field_control            = buf[] >>  & ] & ;
    unsigned transport_error_indicator        : ;
    unsigned payload_unit_start_indicator    : ;
    unsigned transport_priority                : ;
    unsigned PID                            : ;
    unsigned transport_scrambling_control    : ;
    unsigned adaption_field_control            : ;
    unsigned continuity_counter                : ;
} TS_packet_header;
左右TS分析流