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 ...
随机推荐
- haskell中的monad
monad本意是单子.在haskell中,第一个接触的基本都是IO action,通过把IO动作包装起来我们能很方便的与现实世界进行数据交换.但其实monad的用途不止如此,monad还能讲一系列操作 ...
- redis和ssdb读取性能对比
最近关注了一下ssdb,它的特点是基于文件存储系统所以它支撑量大的数据而不因为内存的限制受取约束.从官网的测试报告来看其性能也非常出色和redis相当,因此可以使用它来代替redis来进行k-v数据业 ...
- .NET Core是什么?
[初步理解] .NET Core 是一个开源的.跨平台的 .NET 实现.而 .NET Framework 是基于 Windows 的 .NET 实现,Mono 是 .NET Framework 的一 ...
- easyui combobox 中实现 checkbox
$('#cc').combobox({ url:'combobox_data1.json', method:'get', valueField:'id', textField:'text', pane ...
- [ACM_图论] Fire Net (ZOJ 1002 带障碍棋盘布炮,互不攻击最大数量)
Suppose that we have a square city with straight streets. A map of a city is a square board with n ...
- [BTS] Deploy Command
BizTalkDeploymentTools.AddResource.bat @Echo OFF SET ApplicationName=%~1 SET ComponentType=%~2 SET C ...
- Factory模式
使用new的Code都违反了DIP. 但是,依赖于稳定的具体类,是无害的.例如string. 另一方面,对于正在开发中的APP,很多具体类是易变的.此时应该依赖于抽象接口. Factory模式:只依赖 ...
- 通过weburl 启动windows程序
1. 注册表修改 建立一个reg文件 执行导入 以RunLocal协议为例子 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\RunL ...
- JPA 不在 persistence.xml 文件中配置每个Entity实体类的2种解决办法
在Spring 集成 Hibernate 的JPA方式中,需要在persistence配置文件中定义每一个实体类,这样非常地不方便,远哥目前找到了2种方法. 这2种方式都可以实现不用persist ...
- VAG DMA protocol
Func 0a - RAM Read 0A Func 0a - ROM Read 0A Func 0a - EEPROM Read FD Func 0C xx - EEPROM Write 0A Fu ...