所谓封装格式就是将已经编码压缩好的视频轨和音频轨按照一定的格式放到一个文件中.

1. TS封装 vs AVI封装
众所周知:  BD就是TS封装, hddvd是PS封装,用TS封装可以无损的支持所有全部HDDVD和BD所带的视频和音频编码.
Video codecs
MPEG-2
MPEG-4 AVC
SMPTE VC-1

Audio codecs
Linear PCM
Dolby Digital
Dolby Digital Plus
Dolby TrueHD
DTS Digital Surround
DTS-HD

而avi封装目前仅仅能支持
Video codecs:
MPEG-4 AVC
对SMPTE VC-1支持不够好

Audio codecs
DTS
AC3

随着BD, HDD Remux的出现,到底哪个好,这也是这段时间争论最多的了。
那么就来看看AVI和TS到底是什么吧。

2. AVI容器-成熟的老技术
AVI是微软1992年推出用于对抗苹果Quicktime的技术,尽管国际学术界公
认AVI已经属于被淘汰的技术,但是由于windows的通用性,和简单易懂的
开发API,还在被广泛使用。

如图1所试, AVI的文件结构、分为头部, 主体和索引三部分. 主体中图像数据
和声音数据是交互存放的。从尾部的索引可以索引跳到自己想放的位置。

AVI本身只是提供了这么一个框架,内部的图像数据和声音顺据格式可以是任
意的编码形式。但是由于索引放在了文件尾部,所以在播放internet流媒体时
已属力不从心。

 


001.jpg



3. AVI容器-画质无损,音质呢?
要说到AVI的弱点,最大的问题就是对高质量VBR音轨的支持了。
VBR全称是Variable BitRate,就是动态比特率。和传统的CBR静态比特率不同,CBR约定死了
音质的采样率为固定值。因为声音是有高潮起伏的,显然,同样文件大小的情况下,VBR最大
限度的提高了音质。所以最新推出的高音质格式通常是VBR格式的。

随之问题也就来了,因为容器里的图像和声音是分开的,所以播放时需要一个图像和声音的
同步过程,如果CBR音轨的话因为码率是定值,同步不成为问题,可是VBR音轨是不断的在\
变换,而AVI没有时间戳去让VBR音轨和图像同步,这样就会产生图像声音不同步的问题。估
计实际动过手的兄弟应该深有体会吧。

那么,AVI是不是就不能支持VBR了呢。VirtualDub提供了一个变通的办法,有兴趣的可以区
Doom9找找看参考资料。以前公认为这属于破解,但是最近也慢慢被学术界承认,成为了对
AVI技术扩充的一种手段。简单说来,通过冗余的数据变换包装来把VBR分成等量的块,达到
模拟CBR的效果。但是这个方法也有局限性,只有一部分VBR声音压缩方式可以使用,而且必
须要详细分析声音音频数据,针对每一种压缩格式制定算出最大冗余量,如果音质码率高的
话编码效率会很差,也很难实现。更何况还有不少是完全不支持的(TrueHD, DTS-HD Master
audio)。所以经常看到说AVI什么都好,音质问题只是因为某些音轨数据量太大,播放器放不
了的说法是不正确的。

附论证的技术资料,对细节不感兴趣的可跳过:
CBR音轨用以下这个记述可实现同步
WAVEFORMATEX::nBlockAlign   1Block大小(Byte)
AVIStreamHeader::dwRate / AVIStreamHeader::dwScale  1秒内包含的Block个数
nBlockAlign=1,dwScale=1,dwRate=nAvgBytesPerSec   nAvgBytesPerSec是常量

VirtualDub的变通法
AVIStreamHeader::dwLength = 变换包的总数
WAVEFORMATEX::nBlockAlign = 变换包最大容量

4.TS
近年来,TS封装是随着MPEG2的流行而占据了主流的地位。全称则是Transport Stream
电视节目是你任何时候打开电视机都能解码(收看)的,所以,MPEG2-TS格式的特点
就是要求从视频流的任一片段开始都是可以独立解码的。

从结构上来说,TS是由头文件和主体所组成的,扩充过的TS流还包括时间戳。这样不管
是什么格式的VBR音轨,都很容易通过时间戳来同步图像。
补充 这里对一些细节过于一笔带过了,详细请参考o版下面对TS流本身包的时间标记的解释

当然,对新的声音格式来说,需要新的分离器,×××来实现解码。
目前在不断改进开发中。

TS不像AVI,从诞生那天起,就考虑到了网络播放,所以很快成为了世界标准并广泛应用
于电视台数字播放,手机等各个领域
002.jpg


5. 总结
010.jpg

结论,
新的BD和HDDVD的带来新的规格音频视频标准,要是想体验原汁原味的BD/HDVD音视频,
那么就下载原始BD'HDDVD文件或者TS REMUX版,但是如果现有设备不属于高配置,对一
些技术标准的差异并不在乎,又对近期可能产生的播放问题想避免的话,AVI也是一个很好
选择。毕竟看片子是为了享受,大家各取所需吧。






1. TS是流式数据,理论上说没有专门的文件头,如果有的话就不能满足从任何时候开始都能解码的要求。但总要有一些关键性的信息放在什么地方,在TS流里称为PSI(Program Specification Information), 包括了PAT, PMT, NIT, CAT这4种类型的表,其中又以PAT最为关键。对于我们来说,一般只用到PAT和PMT这2张表。NIT和CAT一般是给电视台做付费解码加密的。在 TS流中PSI会定期出现,播放时只要等到PSI信息,就可以开始获取视频和音频流信息,开始解码了。专业的TS流合成软件,平均每秒钟插入10次PSI 信息,因此,TS流无论在任何地方切割,最多搜寻1/10秒的数据,就可以找到解码需要的音频视频数据。

2. TS流的基本规范是188字节每包,PSI信息和音频视频流都用188字节来包装。 m2ts里使用的是192字节TS流,188+4字节时间戳(这个时间戳的意思不很清楚, gabest和haali分离器都是直接丢弃的),这个就是你图片里显示的结构, 但高清电视台和思路remux使用的都是188字节TS

3. 188字节TS里的时间码在哪里?TS流中有多个时间码,包括PCR(program_clock_reference), OPCR(original_program_clock_reference), ESCR(elementary stream clock reference),但对于我们这种在PC上播放的应用来说,PTS(presentation time stamp)才是我们最关心的内容。通常,每个音频帧和视频帧都有自己的PTS时间码,使用这个时间码,无论什么类型的音频和视频编码,都可以在时间轴上取得完美同步。

4. TS相比MKV/AVI的劣势在哪里?
a. TS由于是流式结构,没有类似MKV和AVI的全局文件头,无法保存视频和音频帧的索引,因此在拖动的时候,根据时间找到文件位置会花费较多的时间,在硬盘上还好,在光盘上感觉会明显很多。那么Blu-ray怎么解决这个问题?它额外有单独的索引文件,索引这个m2ts的各音频视频帧。
b. TS采用了188字节包,但其中4字节是包头,不能提供有效负载,另外,剩下的184字节中,经常还会出现浪费,比如一个全码DTS音频帧是2013字节 (DTS-HD Core是2012字节), 10个包嫌小,111个包就浪费了12-13个字节,积少成多。而AVI,MKV则可以紧紧排在一起,靠单独的索引来区别。因此TS的代价就是空间浪费一些。 做过一些测试和比较,HD区的TS封装MPEG2, H.264和Remux,
额外开销大概3%, HD-RE区的TS封装, 额外开销大概4-5%. 码率越高,额外开销越小。为什么?码率高,每帧的平均数据量就大,用184字节包装,额外开销的比例就很小。反之亦然。极端情况,如果每帧都是1字节,每帧都要单独的184字节包装,那额外开销就是18000%

5. TS和MKV/AVI的优势在哪里?
黄教授已经写了不少,再补充一个,TS的扩展性是无限的,MKV和AVI里要有特别的信息来标识各数据流的codec属性(FourCC). 合成软件和播放软件没有在FourCC上达成共识,大家谁也不敢轻举妄动。TS则更多的是靠实际数据类型来检测的。新的音频和视频数据出来了,按照TS的规范,逐帧封装进TS包里,再合成进完整的TS流里, 就完成了新的音频和视频数据的合成工作,然后就等分离器和×××来支持这种格式了。目前doom9上都没有搞定的TrueHD音频格式,我现在在等一部片子,有了这部片子,我就可以把TrueHD音轨完整的合成进TS流里,但是你要问我怎么播放,我只能告诉你,暂时还不行。 这就是TS封装的威力,在根本没有任何分离器和播放器 支持的前提下,封装合成的工作就已经可以完成了。


希望AVI的拥趸也来说说,AVI还有哪些好处,黄教授和我有意无意的遗漏了?AVI要封装LPCM, DD+, TrueHD, DTS-HD HD, DTS-HDMA 要怎么做?用什么软件?什么版本?什么时候可以看到?
费厄泼赖,你只要告诉我合成软件就行了,不需要告诉我怎么播放。