TS 包由以下3部分组成:

包头: 4字节, 同步,识别,检错和加密用

自适配域:可选

包数据:最大184字节(不存在自适配域)

4字节

184字节

包头

自适配域

包数据

4字节包头结构:

1字节

1比特

1比特

1比特

13比特

2比特

2比特

4比特

同步字节

传输错误描述符

载荷起始描述符

传输优先

包识别

传输加扰控制

适配域控制

连续计数器

自适配域结构包含:

域长度:1字节

域标志:1字节, PCR标志就是其中一个重要标志

域信息: 由域长度指定

包数据的类型一般有如下几种:

PSI信息:  PAT/PMT/CAT/NIT表

视频流

音频流

字幕流

除了PSI信息,视频流、音频流和字幕流会做PES打包。

PAT表结构

完整的PAT表包含一个头结构和若干个节目结构,

最后还要加上CRC校验。

PAT表头结构(总共8字节)

1Byte

1bit

1bit

2bit

12bit

2Byte

2bit

5bit

1bit

1Byte

1Byte

表标识

段语法标识符

填0

保留

段长度含CRC

传输流标识

保留

版本号

有效标识

段号

最后段号

PAT表节目结构

2Byte

3bit

13bit

节目号

保留

节目映射表PID

PMT表结构

一个完整的PMT表包含一个表头和若干个流结构,

最后还要加上CRC校验。

PMT表流结构

1Byte

3bit

13bit

4bit

12bit

流类型

保留

基本元素PID

保留

节目元素长度

PMT头结构(总共12字节)

1Byte

1bit

1bit

2bit

12bit

2Byte

2bit

5bit

1bit

1Byte

1Byte

3bit

13bit

4bit

12bit

表标识

段语法标识符

填0

保留

段长度含CRC

节目数

保留

版本

有效标识

段号

最后段号

保留

PCR PID

保留

节目信息长度

MPEG2/TS 包结构简述的更多相关文章

  1. ts包、表、子表、section的关系

    我们经常接触到创建 DEMUX,注册 Filter 过滤数据, 通过回调过滤出 section 数据,然后我们对 section 数据做具体的解析或者其他操作. 我们这里说的 section 就是段的 ...

  2. 文档:网络通讯包结构(crc校验,加解密)

    一直想把这个流程整理一下. 包结构: 包 对(datacrc+protoID+dataSize)组成的byte[] 进行crc计算而得到 对(数据内容)进行crc计算而得到 协议号 数据内容的字节长度 ...

  3. jdk1.7.0_80源码包结构

    解压源码src.zip,jdk源码结构如下所示: src |--com.sun    sun公司对jdk的实现,Oracle官方不支持,不保证跨平台(可能一些类linux有而windows没有),甚至 ...

  4. Node.js入门:包结构

        JavaScript缺少包结构.CommonJS致力于改变这种现状,于是定义了包的结构规范(http://wiki.commonjs.org/wiki/Packages/1.0 ).而NPM的 ...

  5. JDK源码包结构分类

    最近查看JDK源码时,无意间发现几个类在陌生包里:com.sun.*.sun.*.org.*,google了一把总结了下以备他人搜索,如内容有误欢迎指正!   Jre库包含的jar文件(jdk1.6) ...

  6. TCP/IP数据包结构具体解释

    [关键词] TCP IP 数据包 结构 具体解释 网络 协议 一般来说,网络编程我们仅仅须要调用一些封装好的函数或者组件就能完毕大部分的工作,可是一些特殊的情况下,就须要深入的理解 网络数据包的结构, ...

  7. 【Java基础】Jar包结构结构分析和操作具体解释

    作者:郭嘉 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells github:https://github.com/AllenWell 一 ...

  8. UDP包结构

    UDP包结构  // 参考: http://www.2cto.com/net/201307/224715.html UDP数据包由首部和数据组成,每行4个字节(32位),首部固定长度为8个字节(2行) ...

  9. USB的包结构及包分类

    USB的传输总是低位在前,高位在后. USB的传输方向:从设备到主机的数据为输入:从主机到设备的数据叫做输出. 1. 包结构 以同步域开始,紧跟着一个包标识符PID(Packet Identifier ...

随机推荐

  1. codeforces 427E

    题意:给定一位空间里n个点的坐标,每个坐标有一个罪犯,现在要建一个警局,并且这个警局只有一辆车,车一次最多载m个人,问应建在哪是的抓回所有罪犯的路程和最小. 思路: 很明显建在罪犯的点上一定可以找到最 ...

  2. ASP.NET MVC 4源码分析之如何定位控制器

    利用少有的空余时间,详细的浏览了下ASP.NET MVC 4的源代码.照着之前的步伐继续前进(虽然博客园已经存在很多大牛对MVC源码分析的博客,但是从个人出发,还是希望自己能够摸索出这些).首先有一个 ...

  3. thinkphp支持大小写url地址访问,不产生下划线

    from:http://www.111cn.net/phper/thinkPhp/57748.htm 一.在配置文件中开启了thinkphp的大小写识别功能,使链接大小写都可以正常访问: ‘URL_C ...

  4. python time

    Python-time 计算程序运行时间 import time start = time.clock() time.sleep(5) end = time.clock() runtime = end ...

  5. 剑指offer 面试题6:重建二叉树

    重建二叉树 题目 输入某二叉树的前序遍历和中序遍历,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含有重复的数字. 例如,前序遍历序列:{1,2,3,7,3,5,6,8},中序遍历序列:{ ...

  6. [游戏模版17] Win32 推箱子 迷宫

    >_<:Here introduce a simple game: >_<:resource >_<:only can push a box and finally ...

  7. redmine 一键安装

    Redmine 是一个开源的.基于Web的项目管理和缺陷跟踪工具.它用日历和甘特图辅助项目及进度可视化显示.同时它又支持多项目管理.Redmine是一个自由开放 源码软件解决方案,它提供集成的项目管理 ...

  8. 点击div外面该div消失

    <head> <meta charset="UTF-8"> <title></title> <script type=&quo ...

  9. 如何利用tomcat搭建一个动态服务器

    这篇文章只记录已解压缩包的方式安装,通常linux服务器上也是这样. 1.下载tomcat.zip压缩包. http://tomcat.apache.org/download-70.cgi 2.把zi ...

  10. atitit.android模拟器使用报告

    atitit.android模拟器使用报告 靠谱助手 仅仅7--15M,只助手,没android模拟器.. BlueStacks新版本App Player采用名为Layercake的技术,可以让针对A ...