最近在做抓包录像方面的案例,通过tcpdump抓包后再分析包文件,解析出包中的视频等文件信息。先做最简单的部分,针对组播流的抓包录像分析。

TS识别TS包由4B的包头(header)、可变长度的调整头和净荷(payload)组成;

包头结构定义如下:

struct ts_header{

char syn_byte:8; // 包头同步字节,0x47

char transport_error_indicator:1; //传送数据包差错指示器

char payload_unit_start_indicator:1; //有效净荷单元开始指示器

char transport_priority:1; //传送优先级

int PID:13; //包ID

char transport_scrambling_control:2; //传送加扰控制

char adaptation_field_control:2; //调整字段控制

char continuity_conunter:4; //连续计数器 0-15

}syn_byte:值为0x47,是MPEG-2TS的传送包标识符;

transport_error_indicator:值为1时,表示相关的传送包中至少有一个不可纠正的错误位,只有错误位纠正后,该位才能置0;

payload_unit_start_indicator:表示TS包的有效净荷带有PES或PSI数据的情况;当TS包的有效净荷带有PES包数据时,payload_unit_start_indicator为1,表示TS包的有效净荷以PES包的第一个字节开始;为0࿰