MPEG2/TS 包结构简述
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 包结构简述的更多相关文章
- ts包、表、子表、section的关系
我们经常接触到创建 DEMUX,注册 Filter 过滤数据, 通过回调过滤出 section 数据,然后我们对 section 数据做具体的解析或者其他操作. 我们这里说的 section 就是段的 ...
- 文档:网络通讯包结构(crc校验,加解密)
一直想把这个流程整理一下. 包结构: 包 对(datacrc+protoID+dataSize)组成的byte[] 进行crc计算而得到 对(数据内容)进行crc计算而得到 协议号 数据内容的字节长度 ...
- jdk1.7.0_80源码包结构
解压源码src.zip,jdk源码结构如下所示: src |--com.sun sun公司对jdk的实现,Oracle官方不支持,不保证跨平台(可能一些类linux有而windows没有),甚至 ...
- Node.js入门:包结构
JavaScript缺少包结构.CommonJS致力于改变这种现状,于是定义了包的结构规范(http://wiki.commonjs.org/wiki/Packages/1.0 ).而NPM的 ...
- JDK源码包结构分类
最近查看JDK源码时,无意间发现几个类在陌生包里:com.sun.*.sun.*.org.*,google了一把总结了下以备他人搜索,如内容有误欢迎指正! Jre库包含的jar文件(jdk1.6) ...
- TCP/IP数据包结构具体解释
[关键词] TCP IP 数据包 结构 具体解释 网络 协议 一般来说,网络编程我们仅仅须要调用一些封装好的函数或者组件就能完毕大部分的工作,可是一些特殊的情况下,就须要深入的理解 网络数据包的结构, ...
- 【Java基础】Jar包结构结构分析和操作具体解释
作者:郭嘉 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells github:https://github.com/AllenWell 一 ...
- UDP包结构
UDP包结构 // 参考: http://www.2cto.com/net/201307/224715.html UDP数据包由首部和数据组成,每行4个字节(32位),首部固定长度为8个字节(2行) ...
- USB的包结构及包分类
USB的传输总是低位在前,高位在后. USB的传输方向:从设备到主机的数据为输入:从主机到设备的数据叫做输出. 1. 包结构 以同步域开始,紧跟着一个包标识符PID(Packet Identifier ...
随机推荐
- 个性二维码开源专题<替换定位点>
基础方法: ChangeFillShape //修改填充形状 ChangeFillShape(...) // 摘要: // 修改填充形状 // // 参数: // g: // 图形画板 // // F ...
- Dynamic CRM 2013学习笔记(九)CrmFetchKit.js介绍:Fetchxml、多表联合查询, 批量更新
CrmFetchKit.js是一个跨浏览器的一个类库,允许通过JavaScript来执行fetch xml的查询,还可以实现批量更新,分页查询等.目前已支持Chrome 25, Firefox 19 ...
- Java正则表达式的应用
在很多种情况下,我们都必须对字符串进行匹配,以便判断字符串的格式是否符合要求,对字符串中的内容进行提取.比如,我要从一段话aabdfe中,判断这段话是否有包含ab这个词,那么如果用if-else来判断 ...
- [OpenCV] 3、直线提取 houghlines
>_<" 发现一个好的链接,是一个讲openCV的网站:http://www.opencv.org.cn/opencvdoc/2.3.2/html/index.html > ...
- [C++] C/C++结构体的区别
C/C++结构体的区别 >_<:C中的结构体和C++中结构体的不同之处: 在C中的结构体只能自定义数据类型,结构体中不允许有函数,而C++中的结构体可以加入成员函数. >_<: ...
- [BTS] The adapter "SQL" raised an error message. Details "The Messaging Engine is shutting down. ".
Get a warning in event log. Log Name: ApplicationSource: BizTalk ServerDate: 3/ ...
- .NET Remoting学习笔记(一)概念
目录 .NET Remoting学习笔记(一)概念 .NET Remoting学习笔记(二)激活方式 .NET Remoting学习笔记(三)信道 背景 自接触编程以来,一直听过这个名词Remotin ...
- IoC实践--用Autofac实现MVC5.0的IoC控制反转方法
Autofac是一个.net平台下发性能还不错的IoC框架,利用它可以实现依赖注入和控制反转,使自己的软件模块之间的耦合性大大降低,让软件扩展.维护更加容易.控制反转(Inversion of Con ...
- UVa 10387- Billiard
UVa 10387- Billiard Table of Contents 1 题目 2 思路 3 代码 4 参考 1 题目 ============= Problem A: Billiard In ...
- Android Studio no debuggable applications解决方案2
android studio 默认是没有开启debuggable 功能的,在tools里打开该功能即可,Tools->Android->Enable ADB Integration. 刚设 ...