关于ES、PES、PS以及TS码流
from:http://blog.csdn.net/huangblog/article/details/8740571
一、基本概念
1)ES
ES--Elementary Streams (原始流)是直接从编码器出来的数据流,可以是编码过的视频数据流(H.264,MJPEG等),音频数据流(AAC),或其他编码数据流的统称。ES流经过PES打包器之后,被转换成PES包。
ES是只包含一种内容的数据流,如只含视频或只含音频等,打包之后的PES也是只含一种性质的ES,如只含视频ES的PES,只含音频ES的PES等。每个ES都由若干个存取单元(AU)组成,每个视频AU或音频AU都是由头部和编码数据两部分组成,1个AU相当于编码的1幅视频图像或1个音频帧,也可以说,每个AU实际上是编码数据流的显示单元,即相当于解码的1幅视频图像或1个音频帧的取样。
2)PES
PES--Packetized Elementary Streams (分组的ES),ES形成的分组称为PES分组,是用来传递ES的一种数据结构。PES流是ES流经过PES打包器处理后形成的数据流,在这个过程中完成了将ES流分组、打包、加入包头信息等操作(对ES流的第一次打包)。PES流的基本单位是PES包。PES包由包头和payload组成。
3)PTS、DTS
PTS--PresentationTime Stamp(显示时间标记)表示显示单元出现在系统目标解码器(H.264、MJPEG等)的时间。
DTS--Decoding Time Stamp(解码时间标记)表示将存取单元全部字节从解码缓存器移走的时间。
PTS/DTS是打在PES包的包头里面的,这两个参数是解决音视频同步显示,防止解码器输入缓存上溢或下溢的关键。每一个I(关键帧)、P(预测帧)、B(双向预测 帧)帧的包头都有一个PTS和DTS,但PTS与DTS对于B帧不一样,无需标出B帧的DTS,对于I帧和P帧,显示前一定要存储于视频解码器的重新排序缓存器中,经过延迟(重新排序)后再显示,所以一定要分别标明PTS和DTS。
4)PS
PS--Program Stream(节目流)PS流由PS包组成,而一个PS包又由若干个PES包组成(到这里,ES经过了两层的封装)。PS包的包头中包含了同步信息与时钟恢复信息。一个PS包最多可包含具有同一时钟基准的16个视频PES包和32个音频PES包。
5)TS
TS--Transport Stream(传输流)由定长的TS包组成(188字节),而TS包是对PES包的一个重新封装(到这里,ES也经过了两层的封装)。PES包的包头信息依然存在于TS包中。
TS流与PS流的区别在于TS流的包结构是固定长度的,而PS流的包结构是可变长度的。PS包由于长度是变化的,一旦丢失某一PS包的同步信息,接收机就会进入失步状态,从而导致严重的信息丢失事件。而TS码流由于采用了固定长度的包结构,当传输误码破坏了某一TS包的同步信息时,接收机可在固定的位置检测它后面包中的同步信息,从而恢复同步,避免了信息丢失。因此在信道环境较为恶劣、传输误码较高时一般采用TS码流,而在信环境较好、传输误码较低时一般采用PS码流。
6)TS单一码流、混合码流
单一性:TS流的基本组成单位是长度为188字节的TS包。
混合性: TS流由多种数据组合而成,一个TS包中的数据可以是视频数据,音频数据,填充数据,PSI/SI表格数据等(唯一的PID对应)。
二、基本流程
1)A/D转换后,通过MPEG-2压缩编码得到的ES基本流。这个数据流很大,并且只是I,P,B的这些视频帧或音频取样信息。
2)通过PES打包器,打包并在每个帧中插入 PTS/DTS标志,变成PES。原来是流的格式,现在成了数据包的分割形式。
3)PES根据需要打包成PS或TS包进行存储(DVD)或传输(DVB)。因每路音/视频只包含一路的编码数据流,所以每路PES也只包含相应的数据流。
附:
关于ES、PES、PS以及TS码流相关推荐
- MPEG-2传输流的码流分析(PS与TS码流)
0 引言 目前,我国数字电视的信道传输的三种主要传输方式都有了统一明确的国家标准.其主要差别是信道编码.调制方法,但视频和音频信源处理和系统层复用都是以MPEG-2为基础的编码方案.MPEG-2标准自 ...
- HLS之TS码流封装
在成功完成了从TS码流中提取出H264和AAC之后,开始一下最终的挑战,就是把H264封装成TS个数.这里想把码流的切片一起实现在里面.这里画了一个大概的实现图. 这个图主要是实现了切片的流程. 我计 ...
- ts码流解析工作总结
近段时间,由于工作需要,初步研究学习了TS流的解析,多少有些心得体会,这里与大家分享一下(大牛可以无视,呵呵). 已编码的音视频数据,按照PES格式进行第一次打包,即PES包.一系列PES包,也有一种 ...
- 【ts码流】获取指定section
啊啊啊啊啊啊啊啊啊啊啊啊-好不容易组出来了section,好几周了吧,其中一周是回学校了,之后就是放空状态了,感觉要是认真思考的话,应该不难的吧- 组section的历程: 首先,需要清楚ts码流里的 ...
- JavaCV音视频开发宝典:使用JavaCV读取海康平台或海康网络摄像头sdk回调视频TS码流并解析预览图像
<JavaCV音视频开发宝典>专栏目录导航 <JavaCV音视频开发宝典>专栏介绍和目录 前言 两年前博主写了如何利用JavaCV解析各种h264裸流,<JavaCV ...
- 说一说TS码流里面的PCR
问题的起因是这样的:在我刚开始学习的码流的时候,就有人告诉我TS里面的有一个绝对时间叫做PCR,但是我们因为代码原因,都基本不怎么用.后面分析码流的时候基本都是使用EasyICE,然后看到的数据就是下 ...
- TS码流解析-6-解析EIT表
任务六 利用之前编写的函数,从码流中解析EIT表,主要是获取对应的service_id和EPG标题,时间段等. 相关知识 简述 EIT表按照时间顺序提供每一个业务所包含的事件信息,是事件信息表的简称, ...
- PS封装H264码流
H264的PS封装 一个完整的ps包封装: PSheader + PS system header + PS system Map + PES header + h264 data 因为一般视频数据都 ...
- ES、PES、PS、TS流
一.基本概念 1)ES ES--Elementary Streams (原始流)是直接从编码器出来的数据流,可以是编码过的视频数据流(H.264,MJPEG等),音频数据流(AAC),或其他编码数 ...
最新文章
- javascript中this那些事
- C#访问远程共享加锁文件夹
- android camera(二):摄像头工作原理、s5PV310 摄像头接口(CAMIF)
- php邮件发送tp,Thinkphp5 邮件发送Thinkphp发送邮件
- SQL基础---SQL AND OR 运算符
- LeetCode 117. 填充每个节点的下一个右侧节点指针 II(递归循环)
- 使用Docker快速搭建生产环境
- Python—语法基础(8) 分支、循环结构
- 2016-08-12
- VM 网络设置 for xp3
- 资源下载类网站源码 第二版本分享
- 为什么普通人做量化交易会亏钱?
- 脂肪肝青睐“三围”人士 不吃早餐容易诱发
- 深度学习【注意力机制(Attention)原理和实现】
- MyBatis批量的增删改查操作
- 腾讯T3大牛亲自教你!2021大厂Android面试经验,经典好文
- 20220727使用汇承科技的蓝牙模块HC-05配对手机进行蓝牙串口的演示
- Kubernetes调度之亲和性和反亲和性
- 阿里云国际站代理商:阿里云国际版香港轻量ECS服务器怎么样?
- GAN介绍 - 相关研究课题
热门文章
- linux内核网络协议栈--数据包的数据收发简略流程图(二十八)
- HTML5手机手写签名开发,html5手写签名
- ios android 录音格式,跨系统的录音格式兼容性问题: iOS Android
- java springcloud版b2b2c社交电商spring cloud分布式微服务 (四) 断路器(Hystrix)
- xtrabackup 安装、备份和恢复
- 基于intellij和meavn的整合开发struts2框架的web程序
- linux 开启独立iptables日志
- 缓存的Cache Aside模式
- Google 已正式结束对 Eclipse Android 的支持
- js笔记——call,apply,bind使用笔记