解析TS流PAT和PMT代码.doc

解析TS流PAT和PMT代码.doc

ID:48517733

大小:45.00 KB

页数:10页

时间:2020-02-06

解析TS流PAT和PMT代码.doc_第1页
解析TS流PAT和PMT代码.doc_第2页
解析TS流PAT和PMT代码.doc_第3页
解析TS流PAT和PMT代码.doc_第4页
解析TS流PAT和PMT代码.doc_第5页
资源描述:

《解析TS流PAT和PMT代码.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、.#include#include#include#definets_path"/home/huohuo/huangwork/work/birds.ts"//TS文件的绝对路径voidRead_Ts_Packet(FILE*file_handle,unsignedchar*packet_buf,intlen);//读一个TS流的packetintparse_TS(unsignedchar*buffer,intFileSize);//分析TS流,并找出PAT的PID和PAT的tablevoid

2、parse_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();//

3、打印PMTtable中包含的stream的类型和PIDunsignedchar*Find_video_audio(unsignedshortprogram_pid,unsignedchartype);//找出Video或者Audio的tabletypedefstruct{unsignedshortprogram_num;//program'snumunsignedshortpmt_pid;//}PROGRAM;typedefstruct{unsignedcharstream_type;unsignedshortelementary_pid;}PRO

4、_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_buff

5、er,*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);//清空bufferVideo_or_Audio_buffer=(unsignedchar*)malloc(sizeof(char)*188);memset(Video_or_Audio_buffer,0,sizeof(char)*188);fil

6、e_handle=fopen(ts_path,"rb+");//以二进制方式打开TS文件if(NULL==file_handle)//判断是否打开文件{perror("fopen");printf("openfileerror!");return0;}elseprintf("openfilesuccess!");fseek(file_handle,0,SEEK_END);//指针file_handle将以SEEK_END位置偏移0个位置,即将指针移动到文件尾FileSize=ftell(file_handle);//计算file_handl

7、e到文件头的偏移字节数,即计算文件的大小printf("filesize=%d",FileSize);rewind(file_handle);//equivalent(void)feek(file_handle,0L,SEEK_SET)将file_handle指针移动到文件头位置printf("findPATbegin-------->");for(i=0;i

8、et=parse_TS(buffer,188);//解析188个字节的TS'spacket,并打印找到的PAT’stabl

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。