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 ...
随机推荐
- codeforces 427E
题意:给定一位空间里n个点的坐标,每个坐标有一个罪犯,现在要建一个警局,并且这个警局只有一辆车,车一次最多载m个人,问应建在哪是的抓回所有罪犯的路程和最小. 思路: 很明显建在罪犯的点上一定可以找到最 ...
- ASP.NET MVC 4源码分析之如何定位控制器
利用少有的空余时间,详细的浏览了下ASP.NET MVC 4的源代码.照着之前的步伐继续前进(虽然博客园已经存在很多大牛对MVC源码分析的博客,但是从个人出发,还是希望自己能够摸索出这些).首先有一个 ...
- thinkphp支持大小写url地址访问,不产生下划线
from:http://www.111cn.net/phper/thinkPhp/57748.htm 一.在配置文件中开启了thinkphp的大小写识别功能,使链接大小写都可以正常访问: ‘URL_C ...
- python time
Python-time 计算程序运行时间 import time start = time.clock() time.sleep(5) end = time.clock() runtime = end ...
- 剑指offer 面试题6:重建二叉树
重建二叉树 题目 输入某二叉树的前序遍历和中序遍历,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含有重复的数字. 例如,前序遍历序列:{1,2,3,7,3,5,6,8},中序遍历序列:{ ...
- [游戏模版17] Win32 推箱子 迷宫
>_<:Here introduce a simple game: >_<:resource >_<:only can push a box and finally ...
- redmine 一键安装
Redmine 是一个开源的.基于Web的项目管理和缺陷跟踪工具.它用日历和甘特图辅助项目及进度可视化显示.同时它又支持多项目管理.Redmine是一个自由开放 源码软件解决方案,它提供集成的项目管理 ...
- 点击div外面该div消失
<head> <meta charset="UTF-8"> <title></title> <script type=&quo ...
- 如何利用tomcat搭建一个动态服务器
这篇文章只记录已解压缩包的方式安装,通常linux服务器上也是这样. 1.下载tomcat.zip压缩包. http://tomcat.apache.org/download-70.cgi 2.把zi ...
- atitit.android模拟器使用报告
atitit.android模拟器使用报告 靠谱助手 仅仅7--15M,只助手,没android模拟器.. BlueStacks新版本App Player采用名为Layercake的技术,可以让针对A ...