博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

关于ES、PES、PS以及TS码流【好】

Posted on 2017-01-09 14:42  bw_0927  阅读(1037)  评论(0编辑  收藏  举报

 

http://blog.sina.com.cn/s/articlelist_1676428144_0_1.html

http://service.ivideostar.com/bbs/forum.php?mod=collection&action=view&ctid=11

 

http://blog.csdn.net/huangblog/article/details/8740571

http://blog.chinaunix.net/uid-27092216-id-4418554.html

http://www.360doc.com/content/10/0311/19/884768_18394152.shtml

http://www.360doc.com/content/10/0311/07/884768_18394217.shtml

http://www.360doc.com/content/10/0313/11/884768_18581761.shtml

 

 

一、基本概念

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也只包含相应的数据流。

 

附:

 

 

==========================================

http://blog.csdn.net/guofengpu/article/details/52035557

 数字信号实际传送的是数据流,一般数据流包括以下三种:
     (1)ES流(Elementary Stream):也叫基本码流,包含视频、音频或数据的连续码流。
     (2)PES流(Packet Elementary Stream):也叫打包的基本码流,是将基本的码流ES流根据需要分成长度不等的数据包,并加上包头就形成了打包的基本码流PES流。
     (3)TS流:也叫传输流,是由固定长度为188字节的包组成,含有独立时基的一个或多个program, 一个program又可以包含多个视频、音频、和文字信息的ES流; 每个ES流会有不同的PID标示. 而又为了可以分析这些ES流, TS有一些固定的PID用来间隔发送program和ES流信息的表格: PAT和PMT表。适用于误码较多的环境。
    TS流(TransportStream)即在MPEG-2系统中,由视频,音频的ES流和辅助数据复接生成的用于实际传输的标准信息流称为MPEG-2传送流。信息复合/分离的过程称为系统复接/分接,据传输媒体的质量不同,MPEG-2中定义了两种复合信息流:传送流(TS)和节目流(PS:ProgramStream)。
 
    TS流与PS流的区别在于TS流的包结构是固定长度的,而PS流的包结构是可变长度。 PS包与TS包在结构上的这种差异,导致了它们对传输误码具有不同的抵抗能力,因而应用的环境也有所不同。TS码流由于采用了固定长度的包结构,当传输误码破坏了某一TS包的同步信息时,接收机可在固定的位置检测它后面包中的同步信息,从而恢复同步,避免了信息丢失。而PS包由于长度是变化的,一旦某一PS包的同步信息丢失,接收机无法确定下一包的同步位置,就会造成失步,导致严重的信息丢失。因此,在信道环境较为恶劣,传输误码较高时,一般采用TS码流;而在信道环境较好,传输误码较低时,一般采用PS码流由于TS码流具有较强的抵抗传输误码的能力,因此目前在传输媒体中进行传输的MPEG-2码流基本上都采用了TS码流的包。
 
    封装 : 就是捆绑打包, 将画面视频文件和音轨文件打包在一起, 并按照一定规则建立排序和索引, 便于播放器或播放软件来索引播放. 包括AVI / PS(Program Stream)/ TS(Transport Stream)/ MKV(Matroska)等。
 
 
 
================================
http://service.ivideostar.com/bbs/thread-156-1-1.html
http://blog.sina.com.cn/s/articlelist_1676428144_0_1.html
 
MPEG-2 编解码时,都会遇到这些“流”(音视频数据流)!

首先是Elementary Stream  (简称 ES 流 ),

中文则译为『 基本流』 ;

在MPEG 2编码过程中,这是首先生成的、最初始的信号流,分视频ES流,以及音频ES流等。



然后,就需要将基本流 (ES 流)打包,生成”打包后的基本流“,


英文是 Packetized Elementary Stream , 简称 PES 流!

中文译为『打包后的基本流』,或称为『包化基本流』

最后: 根据MPEG-2 的规范, 可以在(下述)最终生成的2种格式数据流中选择其一!



一种是固定长度的,188个字节的,适用于恶劣传输环境的数据流,

Transport Stream ,简称 TS 流,

中文译为『传输流(或传送流)』!

数字电视广播时(卫星S、有线C、地面波T),基本上都是用TS流传送的,
既使丢帧.
或者是从任意时段开始(播放),都能准确同步。



另一种是长度可变的,仅适用于交互式媒体,而不能用于恶劣环境的,叫 

Program Stream , 简称 PS 流,

中文译为『节目流』 (或称 『程序流』)

标清的DVD影碟制作,会遇到PS流的。 

PS 流的缺点,

是经不起断点、丢帧、丢包、误码等恶劣的传输环境,一旦有了干扰,就玩完!
 
标清的DVD影碟,是基于 PS流的。  而蓝光影碟,则改用 TS流。
 
 
编码、调制流程:
素材-> 导入/模数转换-> 数字化、音视频非线性编辑-> 输出ES流
-> 打包成PES流 -> 集成为 TS 流(或 PS流),
从而实现影视制作、发布/广播的流程。
 
 
作为逆程(拆包、分解、接收/解析端)的解调、解码的流程:
最终是 TS流(或PS流) -> PES流 ->ES流 ,
将音视频ES流分别交付解码模块,从而实现 音视频的分别处理,
完成音频和视频的解析、呈现、观赏的流程。
 
  • 将视频ES流,通过显卡或视频终端设备显示出来;
  • 将音频ES流, 通过声卡播放出来! 

 

http://blog.sina.com.cn/s/articlelist_1676428144_0_1.html

http://service.ivideostar.com/bbs/forum.php?mod=collection&action=view&ctid=11

弄明白 几个流之间的联系了吗?

Yuran 给你一点点提示: 

  • 编码后,如果发现后缀名是MPEG 或 MPG 的、既有声音、同时也有视像的文件,应该是 PS 节目流(或称程序流)。
  • 如果后缀名是 M2V 的,观赏时,只有视像,而没有声音的,那铁定的就是 ES 基本流。

  另外注意: 以AVCHD为录制标准的高清摄像机,所存储的高清视频文件,其后缀名, 一般都是MTS 或M2TS 的。  想一想:是不是与 TS (传输)流,有点瓜葛呢?!

  在蓝光影碟的规范中,TS (传输)流,是非常重要的。

 

一点小提示:

M2V、 WAV、AC3 等后缀名的音视频文件,属 ES流范畴。

M2P、MPG、MPEG 等后缀名的文件,属 PS 流。

MTS、M2TS、TS 等后缀名的文件,属TS流。

 

 

ES流素材的特点:

  • 音频、视频各自独立,不能融合。
  • 不适于观赏(有音频却没有视频,或有视频而没有音频)。

但凡高阶的影碟制作软件,都只接受ES流的素材。

 

PS流 :

  许多非编爱好者,在制作影碟时,都爱用PS 流, 也就是

音视频合二为一的 MPG、MPEG、VOB等文件。

特点:

  • 音频,视频,已经整合在一起。适于观赏。
  • 不适于影碟的高阶制作。
  • 不适于恶劣条件下的视频传输、节目广播等场合。

标清 DVD 影碟的主导架构,PS 流。

 

 

TS流:

  广播级的专用规格。可以在恶劣的条件下,完成广播、传输的任务。

目前的三种数字电视广播的规范( TCS)

  • Terrestrial (地面波);
  • Cable(有线);
  • Satellite (卫星);


所有的广电设备,绝大多数,都是基于 TS流的传输。 

 

 

关于 MKV  :

这只是打包、整合工具。
在 MKV的制作工具中,没有明确的限制。 ES 流、PS流、TS流等素材,都可以往里放。

再最终:进行打包、整合而已,这是个万能容器,有容乃大。

 

 

 

http://service.ivideostar.com/bbs/forum.php?mod=viewthread&tid=157&extra=page%3D1

最初 :非编的素材,都是由下列组成的。

    • 由模拟视频转码而成的、音视频文件;
    • 数码摄像机直接拍摄、采集的数字音视频文件。
    • 网络上分享的影音资源。
    • 影碟、CD光盘等中的影音素材。

 

Elementary Stream  (简称 ES )基本流:

肯定是音视频分开渲染输出的,分为

  • 视频的ES (基本)流;
  • 音频的ES(基本)流。

MPEG-2 视频的ES流格式,有M2V;

音频的ES(基本)流的格式,可以是LPCM的WAV ,W64等格式, 有的也认可 AC3 ...

注意:
分离的、音视频ES (基本) 流素材,是给下一步、DVD影碟、或蓝光影碟制作时,整合/汇编 软件用的。

(因此,不作为一般的观赏用。你愿意看:“不带音频的”视频吗?!

 

Program Stream (简称 PS) 节目流(或称程序流):

( 注意, PS 节目流,算是完整的、音视频合二为一的出品,可以作为一般的观赏用,比如:用计算机观赏。)

 

 MPEG-2 的PS 节目流,后缀名一般都是 MPG、MPEG、M2P 等格式。

(M2P 中,那个字母 P 的意思,不就是暗指 PS 节目流嘛)。

仅适合于一般的影碟制作。注意:高阶的影碟制作软件,不会接受你的PS (节目)流的素材!

因为: 
PS (节目)流算是比较完整的、集成打包后的视频文件了,
再也无法实现多视角、多音轨等进阶影碟设计!

 

 

Transport Stream (简称 TS ) 传输流:

( 注意, TS 传输流,同样也算是完整的、音视频合二为一的出品,也可作为一般的观赏用,比如:用计算机观赏。

MPEG-4/AVC/H.264  的TS 传输流,后缀名一般都是 M2TS 等格式。

(M2TS 中,TS 的意思,不就是暗指 TS 传输流嘛)。

仅适合于一般的影碟制作。

注意:高阶的影碟制作软件,不会接受你的TS (传输)流的素材!
因为: TS (传输)流算是比较完整的、集成打包后的视频文件了,
再也无法实现 多视角、多音轨等进阶影碟设计!  

 

http://service.ivideostar.com/bbs/thread-238-1-1.html

关于各类影碟所适用的、MPEG 类的编码规格, 目前有下述 三种:

  • MPEG-1(仅适用于 VCD 影碟);

 

  • MPEG-2 Part 2 亦称 H.262 (适用于 DVD 影碟 或 蓝光影碟 );

 

  • MPEG-4 亦称 H.264 / AVC ( 仅适用于蓝光影碟 )。




如果,不是为了制作 实体盘(正式影碟的作品)。 
仅制作PC用的视频文件( 放在U盘中),送给用户。然后,让他们用PC 播放器,去随意观赏。
则上述三者(MPEG1/2/4)均可。 

甚至,还可以选用其它的、编码/封装形式 (RMVB、MKV 、AVI、MOV等)...

有的时候,我还故意做成 FLV/F4V的视频格式,便于亲友观看,甚至还能直接用于 网络上传、共享... 

 

根据MPEG-2 的规范,严格地说,是这样的划分。

MPEG-2 Profiles (类别):

    • SP(Simple profile);
    • MP(Main profile);
    • SNR(SNR Scalable profile);
    • Spatial(Spatially Scalable profile);
    • HP(High profile);
    • 422(4:2:2 profile);
    • MVP(Multi-view profile)。

 

我们接触较多的,是 MP (Main profile;译作 主类 )。

 

MPEG-2 Levels (级别) :

  • LL     (Low Level);
  • ML    (Main Level);
  • H-14 (High 1440);
  • HL    (High Level );




我们接触较多的级别,  则是:

  • ML (Main Level ,译作:主级);
  • H14L(译作:1440 高级);
  • HL (High Level ,译作:高级)。

 

 

、=====================

http://blog.chinaunix.net/uid-27092216-id-4418554.html

流格式

PES是打包过的ES,已经插入PTS和DTS,一般是一个pes包为一帧图像

PES包格式:

PES再打包成TS流或PS流,往往一个PES会分存到多个ts包中

每个ES都由若干个存取单元(AU)组成,每个视频AU或音频AU都是由头部和编码数据两部分组成,1个AU相当于编码的1幅视频图像或1个音频帧,也可以说,每个AU实际上是编码数据流的显示单元,即相当于解码的1幅视频图像或1个音频帧的取样。

简而言之:一个AU对应一个帧,一个ES由多个帧组成

 

start_code: 0x00 00 01

stream_id: 

pes包头长: 

信息区:包含附加信息以及PTS和DTS

 

PS流:

每一个pes header包含pts和dts, 在解码时,pes-->es;音视频的同步,除了使用pts和dts以外,还会用到SCR(system clock reference);在编码时,都是由STC(system time clock)生成

ps包长度是可变的

TS也是有多个pes组合而成,ts包由包头和包数据2部分组成,长度固定,包头长4bytes,包数据和自使用区共占184bytes

 

http://blog.chinaunix.net/uid-28458801-id-5124047.html

 

例子:

MPEG-2对视频的压缩产生I帧、P帧、B帧。  一个AU对应一个帧,一个ES由多个帧组成

把帧顺序 I1帧-P4帧-B2帧-B3帧-P7帧-B5帧-B6帧 的编码ES,通过打包并在每个帧中插入PTS/DTS标志,变成PES。在插入PTS/DTS标志时,由于在B帧PTS和DTS是相等的,所以无须在B帧多插入DTS

对于I帧和P帧,由于经过复用后数据包的顺序会发生变化,显示前一定要存储于视频解码器的从新排序缓存器中,经过从新排序后再显示,所以一定要同时插入 PTS和DTS作为从新排序的依据

例如,解码器输入的图像帧顺序为I1-P4-B2-B3-P7-B5-B6,但显示时P4一定要在B2、B3之后,在 PST和DTS的指引下,经过缓存器从新排序,以从建视频帧顺序为:I1-B2-B3-P4-P7-B5-B6

 

在没有B帧的情况下,I帧和P帧在编码和解码端的顺序是一致的。

 

将PES包再打成更小的具固定长度的TS包时在其包头位置加入了PCR和PID(包标识)。PID的值是由用户确定的,解码器根据PID把TS(多节目传输流)上不同节目的TS包区分出来,以重建原来的ES。另外,TS的包头包含一个4bit的连续计数器,连续计数器可对PID包传送顺序计数,据计数器读数,接收端可判断是否有包丢失及包传送顺序错误。所以TS的包头具有同步、识别、检错等功能。

 

============================================================================================

dts/cts/pts/scr/stc

pts: present time stamp

dts:decoding time stamp

cts: Composition Time Stamp

pts/dts是ES流转化成为PES流时,加入PES流头部的信息。主要是为了解决编码和呈现时的数据顺序不同所导致的问题,这个可以见ES/PS/TS章节中的例子部分。

cts

I think I have understood the CTS. it is only for B-frames. Because B-frames may depends fowarding frames to decode, so the CTS means when this B-frame can be decoded, usually that means all the depended frames are received.

从上面这段注释看,cts只用于B帧,用于告诉解码端所有B帧倚赖的I,P帧都已收到。

scr:system clock reference

stc:system time clock

Mpeg-2的同步及时间恢复--STC,PCR,DTS,PTS:

|---------------------------------------------------------------|

|  TS/PS: Transport stream                

|                 Packetized Stream      

|    |-------------------------------------------------------

|     | PES: Packetized Elementary Stream  

|     |   |-----------------------------------------------

|     |   |     ES:Elementary stream     

|     |   |   |------------------------------------

|     |   |    |                                                               |     |   |    |

|     |   |    |   GOP:Group of pictures 

|     |   |   |------------------------------------

|     |   |                                                                    |     |    |

|     |   |------------------------------------------------

|     |                                                                         |     |

|    |--------------------------------------------------------

|                                                                                |

|----------------------------------------------------------------|

 

============================================================================================

 

Bitrate

比特率

在通信和计算机领域,比特率(Bit rate,变量Rbit)是单位时间内传输或处理的比特的数量。比特率经常在通信领域用作连接速度、传输速度、信道容量、最大吞吐量和数字带宽容量的同义词。

比特率是指每秒传送的比特(bit)数。单位为 bps(Bit Per Second),比特率越高,传送数据速度越快。声音中的比特率是指将模拟声音信号转换成数字声音信号后,单位时间内的二进制数据量,是间接衡量音频质量的一个指标。 视频中的比特率(码率)原理与声音中的相同,都是指由模拟信号转换为数字信号后,单位时间内的二进制数据量。

 

 

Ffmpeg/X264/GPAC:

Ffmpeg为开源库,集合了各种音频,视频编解码协议。在FFmpeg中没有实现264解码,调用了X264解码。

X264是对H264编码标准的一种具体实现,是一个优秀的h264视频文件格式的编码器。

GPAC: 多媒体框架GPAC(graphics, animation and interactivity),是一个为科研和学术领域开发的多媒体的框架,支持 MPEG-4, VRML, X3D, SVG, LASeR 等 GPAC 包括一个多媒体播放器 Osmo4 以及多媒体打包工具 MP4Box。