zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    [HNOI2002]营业额统计
    HDU 1374
    HDU 3345
    HDU 2089
    Graham扫描法
    Codeforces 1144D Deduction Queries 并查集
    Codeforces 916E Jamie and Tree 线段树
    Codeforces 1167F Scalar Queries 树状数组
    Codeforces 1167E Range Deleting
    Codeforces 749E Inversions After Shuffle 树状数组 + 数学期望
  • 原文地址:https://www.cnblogs.com/li-baibo/p/3198010.html
Copyright © 2011-2022 走看看