Android多媒体软件开发入门(二)

PART 1

ES(Elementary Streams,原始流)是直接从编码器出来的数据流。ES流经过PES打包器之后,被转换成PES(Packetized Elementary Streams,分组的ES))包。ES是只包含一种内容的数据流,如只含视频或只含音频等,打包之后的PES也是只含一种性质的ES,如只含视频ES的PES或只含音频ES的PES等。每个ES都由若干个存取单元(AU)组成,每个视频AU或音频AU都是由头部和编码数据两部分组成,1个AU相当于编码的1幅视频图像或1个音频帧。PES分组,是用来传递ES的一种数据结构。PES流的基本单位是PES包。PES包由包头和Payload组成。

PTS(显示时间戳)/DTS(解码时间戳)是打在PES包的包头里面的,这两个参数是解决音视频同步显示,防止解码器输入缓存上溢或下溢的关键。每一个I(关键帧)、P(预测帧)、B(双向预测帧)帧的包头都有一个PTS和DTS,但PTS与DTS对于B帧不一样,无需标出B帧的DTS,对于I帧和P帧,显示前一定要存储于视频解码器的重新排序缓存器中,经过延迟(重新排序)后再显示,所以一定要分别标明PTS和DTS。

PS(Program Stream,节目流)由PS包组成,而一个PS包又由若干个PES包组成(到这里,ES经过了两层的封装)。PS包的包头中包含了同步信息与时钟恢复信息。一个PS包最多可包含具有同一时钟基准的16个视频PES包和32个音频PES包。

 TS(Transport Stream,传输流)由定长的TS包组成(188字节),而TS包是对PES包的一个重新封装(到这里,ES也经过了两层的封装)。PES包的包头信息依然存在于TS包中。

 TS流与PS流的区别在于TS流的包结构是固定长度的,而PS流的包结构是可变长度的。PS包由于长度是变化的,一旦丢失某一PS包的同步信息,接收机就会进入失步状态,从而导致严重的信息丢失事件。而TS码流由于采用了固定长度的包结构,当传输误码破坏了某一TS包的同步信息时,接收机可在固定的位置检测它后面包中的同步信息,从而恢复同步,避免了信息丢失。因此在信道环境较为恶劣、传输误码较高时一般采用TS码流,而在信环境较好、传输误码较低时一般采用PS码流。

1)A/D转换后,通过MPEG-2压缩编码得到ES基本流。这个数据流很大,并且只是I,P,B的这些视频帧或音频取样信息。

2)通过PES打包器,打包并在每个帧中插入 PTS/DTS标志,变成PES。原来是流的格式,现在成了数据包的分割形式。

  1. PES根据需要打包成PS或TS包进行存储(DVD)或传输(DVB)。因每路音/视频只包含一路的编码数据流,所以每路PES也只包含相应的数据流。

TS流文件,是一种DVD的文件格式,TS格式的特点就是要求从视频流的任一片段开始都是可以独立解码的,这种特性就决定了TS流文件主要用来实时传送的节目,比如实时广播的电视节目。PS主要应用于存储的具有固定时长的节目,如DVD电影,将DVD上的VOB文件的前面一截剪掉(或者干脆就是数据损坏),那么就会导致整个文件无法解码。

TS流主要由header payload 组成,其中header 部分相对来说比较简单一些,payload部分成分比较复杂,其中payload 可以是PSI(其中包括PAT , PMT),可以是PES(从摄像头采集的数据经过压缩算法后的数据被成为ES , 一般是在一帧的ES数据前加上点头信息,其中最主要的是PTSDTS信息,就形成了PES),可以是一些自适应数据(每一包TS码流长度是固定的188字节,视频数据不够188个字节,使用0xFF填充)

PAT表(Program Association Table,节目关联表)

PAT表主要包含频道号码和每一个频道对应的PMTPID号码,这些信息我们在处理PAT表格的时候会保存起来,以后会使用到这些数据。

PMT表(Program Map Table,节目映射表)

PMT表中包含的数据如下:

(1) 当前频道中包含的所有Video数据的PID

(2) 当前频道中包含的所有Audio数据的PID

(3) 和当前频道关联在一起的其他数据的PID(如数字广播,数据通讯等使用的PID)

参考资料:关于ES、PES、PS以及TS码流 http://www.360doc.com/content/13/0829/15/13084517_310733557.shtml

PART 2

微码简介:

微码是控制硬件decoder的程序,AMRISC指令的汇编语言,只能处理ES数据(RM除外)。

视频播放器播放一个互联网上的视频文件,需要经过以下几个步骤:解协议,解封装,解码视音频,视音频同步。解协议的作用,就是将流媒体协议的数据,解析为标准的相应的封装格式数据。视音频在网络上传播的时候,常常采用各种流媒体协议,例如HTTP,RTMP,或是MMS等等。这些协议在传输视音频数据的同时,也会传输一些信令数据。这些信令数据包括对播放的控制(播放,暂停,停止),或者对网络状态的描述等。解协议的过程中会去除掉信令数据而只保留视音频数据。解封装的作用,就是将输入的封装格式的数据,分离成为音频流压缩编码数据和视频流压缩编码数据。解码的作用,就是将视频/音频压缩编码数据,解码成为非压缩的视频/音频原始数据。解码是整个系统中最重要也是最复杂的一个环节。通过解码,压缩编码的视频数据输出成为非压缩的颜色数据,例如YUV420P,RGB等等;压缩编码的音频数据输出成为非压缩的音频抽样数据,例如PCM数据。

PART 3

H.265旨在在有限带宽下传输更高质量的网络视频, H.265标准也同时支持4K(4096×2160)和8K(8192×4320)超高清视频。

传输码率:H.263可以2~4Mbps的传输速度实现标准清晰度广播级数字电视(符合CCIR601、CCIR656标准要求的720*576);而H.264由于算法优化,可以低于2Mbps的速度实现标清数字图像传送;H.265 High Profile可实现低于1.5Mbps的传输带宽下,实现1080p全高清视频传输。

CVBS 复合视频广播信号(消隐和同步)是一种较老的显示方式,即第一代视频显示输出方式。(第二代是S-VIDEO,第三代是VGA,第四代是DVI,第五代是HDMI)

HDMI是一种高清数字接口标准,它可以提供很高的带宽,无损地传输数字视频和音频信号。HDCP(High-bandwidth Digital Content Protection,高带宽数码内容保护)用于保护HDMI或者DVI传输的高清晰信号不会被非法录制。HDCP技术规范由Intel领头完成。支持HDCP保护技术的播放设备或是显示设备上,均会拥有一个独一无二的HDCP密钥-HDCP KEY(Secret Device Keys),它使用40组56bit的数组密码组成,主要放在芯片制造商的芯片之中,而且每一个拥有HDCP芯片的设备,还会拥有一组私钥(Device Private Key),而这组私钥将会组成KSV(Key Selection Vector),KSV相当于这台芯片设备的序号。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章