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. glRotate函数

    void glRotate( GLdouble angle, GLdouble x, GLdouble y, GLdouble z ) API说明:angle为旋转角度,单位为度:x,y,z是旋转轴的 ...

  2. By Yupei Zhang

    Sparse Learning: Sparsity Learning (foundation) (1) Emergence of simple-cell receptive field propert ...

  3. Dynamic CRM 2013学习笔记(二)插件基本用法及调试

      插件是可与 Microsoft Dynamics CRM 2013 和 Microsoft Dynamics CRM Online 集成的自定义业务逻辑(代码),用于修改或增加平台的标准行为.也可 ...

  4. WPF学习开发客户端软件-任务助手(已上传源码)

    本人纯属WPF新手,布局和WPF的开发水平相当欠缺,从个人来说,还是比较喜欢WPF的,有人说WPF是界面加上WINFORM,我不这样认为,WPF与WINFORM主要的不同在于数据绑定.   这个软件虽 ...

  5. 自己动手写客户端UI库——事件机制(设计思路大放送)

    在上一篇文章中我们创建了一个Button控件,并把这个控件显示在界面上, 在这一篇文章中,我们将为这个控件增加一个事件和一个方法 一:怎么绑定事件的问题 在Winform中,我们对一个按钮绑定事件的方 ...

  6. 编写高质量代码改善C#程序的157个建议读书笔记【11-20】

    章节索引 建议11:区别对待 == 和Equals 建议12:重写Equals也要重写GetHashCode 建议13:为类型输出格式化字符串 建议14:正确实现浅拷贝和深拷贝 建议15:使用dyna ...

  7. Linux:Vim

    模式介绍: Vim具备6种基本模式和5中派生模式. 普通模式 启动后的默认模式,用于:移动光标.删除文本等待,常用命令: dd:删除当前行. [number]dd:连续执行number对应次数的dd命 ...

  8. Openstack Murano(kilo)二次开发之添加Volume

    Openstack Murano(kilo)二次开发之添加Volume 欢迎转载,转载请注明出处:http://www.cnblogs.com/fmnisme/p/openstack_murano_a ...

  9. [Python爬虫] Selenium自动访问Firefox和Chrome并实现搜索截图

    前两篇文章介绍了安装,此篇文章算是一个简单的进阶应用吧!它是在Windows下通过Selenium+Python实现自动访问Firefox和Chrome并实现搜索截图的功能.        [Pyth ...

  10. java继承与多态-3个小题

    1.(1)编写一个接口ShapePara,要求: 接口中的方法: int getArea():获得图形的面积.int getCircumference():获得图形的周长 (2)编写一个圆类Circl ...