最近在做抓包录像方面的案例,通过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