TS流解析 (转)

TS流解析步骤可以拆分为如下几部分:

   Step 1、获取TS流文件包长

           TS流文件一般分为标清和高清文件,文件有固定的包组成,每个包的包头为0x47且及PacketLength=188Byte与204Byte。所以解析TS流文件第一步就是解包长。

           解包长可以通过C语言的fopen、fgetc、fseek等相关函数实现,但要注意open方式最好以二进制方式,否则在调试时打印文件指针当前位置会出现乱码。

           思路:打开文件读一字节判断,满足通过十次跳转循环判断确保正确,一次不满足就从第一次开始位置文件指针后挪一位依次重复前边操作。

           由于该阶段比较简单,不再详细说明。

  Step 2、获取指定PID的所有包

          在已经获得正确数据包长和数据包开始位置后,用户传入一个指定的PID,程序要分析所有的包头信息,并将PID与指定值相等的包另存为文件。详细参见文                     档ISO-138181.pdf的第42页。

          在这一步首先要知道一个TS包的结构:

 188Byte的结构如图所示,其中详细说明了每一位代表啥,具体可以查看该图。

 

参考:http://www.cppblog.com/elva/archive/2009/03/05/75650.html

         http://my.oschina.net/u/174242/blog/74646

posted @ 2013-07-18 13:00  李伯波  阅读(841)  评论(0编辑  收藏  举报