#include<>#include<>#include<>#s_path"/home/huohuo/huangwork/work/"//TS文件的绝对路径voidRead_Ts_Packet(FILE*file_handle,unsignedchar*packet_buf,intlen);//读一个TS流的packetintparse_TS(unsignedchar*buffer,intFileSize); //分析TS流,并找出PAT的PID和PAT的tablevoidparse_PAT(unsignedchar*buffer,intlen); //分析PAT,并找出所含频道的数目和PMT的PIDvoidpronum_pmtid_printf();//打印PMT的PIDunsignedchar*Find_PMT(unsignedshortpmt_pid);//找出PMT的tablevoidparse_PMT(unsignedchar*buffer,intlen,unsignedshortpmt_pid);//解析PMT,找出其中的Video和Audio的PIDvoidprintf_program_list();//打印PMTtable中包含的stream的类型和PIDunsignedchar*Find_video_audio(unsignedshortprogram_pid,unsignedchartype);//找出Video或者Audio的tabletypedefstruct{ unsignedshortprogram_num;//program'snum unsignedshortpmt_pid;//}PROGRAM;typedefstruct{ unsignedcharstream_type; unsignedshortelementary_pid;}PRO_LIST;PROGRAMprograms[10]={{0,0}};//用来存储PMT的PID和数量unsignedintnum=0;//totalprogramPRO_LISTprogram_list[10]={{0,0}}; //用来存储PMT中stream的类型和PIDunsignedintprogram_list_num=0;FILE*file_handle; //指向TS流的指针unsignedintFileSize=0;intmain(){ unsignedcharbuffer[188]={0}; unsignedchar*pmt_buffer,*Video_or_Audio_buffer; unsignedinti=0,j=0,ret=0; pmt_buffer=(unsignedchar*)malloc(sizeof(char)*188);//给buffer分配空间 memset(pmt_buffer,0,sizeof(char)*188); //清空buffer Video_or_Audio_buffer=(unsignedchar*)malloc(sizeof(char)*188); memset(Video_or_Audio_buffer,0,sizeof(char)*188); file_handle
解析汇报TS流PAT和PMT代码 来自淘豆网www.taodocs.com转载请标明出处.