admin管理员组

文章数量:1533914

2024年1月19日发(作者:)

常见音频视频格式简介(1)

MPEG 系列

MPEG即(Moving Pictures Experts Group)运动图象专家组,属于ISO(InternationalOrganization for Standardization)国际标准组织,他们开发了一系列视频音频编码,最为大家熟悉的就是MP3,MPEG-1/2/4。

MPEG-1

较早的视频编码,质量比较差,主要用于 CD-ROM 存储视频,国内最为大家熟悉的就是

VCD(Video CD),他的视频编码就是采用 MPEG-1。

MPEG-2

在MPEG-1 的基础上开发的一种视频编码,它的质量远远好于 MPEG-1,所以被运用在了

DVD-Video 上面,MPEG-2 是DVD-Video 唯一指定的视频编码。MPEG-2 不光运用于

DVD-Video ,现在大部分 HDTV(高清电视)也采用 MPEG-2编码,分辨率达到了

1920x1080。由于 MPEG-2 的普及,本来为 HDTV 准备的 MPEG-3 最终宣告放弃。

MPEG-4

为了应对网络传输等环境,传统的 MPEG-1/2 已经不能适应,所以促使了 MPEG-4 的诞生。MPEG-4采用了一系列新技术,来满足在低带宽下传输较高视频质量的需求。DivX,XviD,MS MPEG4 都是采用的 MPEG-4 视频编码,除了在DVDRip 上面的应用,3GPP 现在也接纳了 MPEG-4 作为视频编码方案。

MPEG-4 AVC

它和 MPEG-4 是两种不同的编码,主要是在极低码率下 MPEG-4 表现并不好,而 AVC 更加适合低带宽传输。在高码率上,AVC的表现也要好过 MPEG-4,所以现在大有取代

MPEG-4 的趋势。下一代 HD DVD 和 Blue Ray Disc 已经正式接纳AVC 为视频编码方案之一,相信 AVC 的发展前途会非常好。

MPEG Audio Layer 1/2

也就是 MP1、MP2 ,较早的音频编码,是 MP3 的前身,主要用于 VCD,DVD,SVCD 的音频编码。

MPEG Audio Layer 3

大名鼎鼎的 MP3,已经成为网络音频的主流格式,能在 128kbps 的码率接近 CD 音质。

MPEG-2 AAC

在 MPEG-2 上开发的一种新的音频编码,和传统的 MPEG Audio 不兼容,它的质量理论上高于 MP3,并且支持多声道。在 96kbps 的码率范围内就能接近 CD 音质,比 MP3 更加适合地码率传输。

MPEG-4 AAC

AAC 已经作为 MPEG-4 标准的音频编码,当然 MPEG-4 Audio 还有其他多种音频编码。

MPEG-4 aacPlus

采用了 SBR 频带复制技术的 AAC,SBR 技术能够让音频编码降低一半的码率而音质不会有太大改变,已经成为 MPEG-4 标准的一部分。

MPEG-4 VQF

NTT 开发的一种音频格式,曾经销声匿迹了一段时间,只在 Nero 里面见到过它的身影。现在搭上 SBR 技术又进入了 MPEG-4 标准,似乎不甘心就这么被遗忘,据说在低比特率下表现比 aacPlus 更好。

mp3PRO

MP3 加上 SBR 技术诞生的一种产品,但是并没有得到多大推广,更没有进入标准。

MP3 Surround

让MP3 插上多声道的翅膀,Fraunhofer 开发的又一种 MP3 升级产品,听说 DivX 6 准备将它作为音频编码。Fraunhofer一直都在围绕着 MP3 升级,mp3PRO、MP3 Surround,这

些产品都能和传统 MP3 兼容,但是随着层出不穷的新编码,不知道MP3 还能走多远。

DVD系列

说了 MPEG ,就不能不提这个 MPEG-2 最大受益者--DVD。当然,这里是指 DVD-Video

和 DVD-Audio,也会涉及一些HD DVD。DVD 的编码都属于应用级的,它们自己并不开发编码,这一点要和 MPEG 区别开来。

Dolby Digital AC3

DVD 事实上的音频编码标准,现在所有的 DVD 都采用它压缩音频,提供了最大 5.1 声道的输出支持,能在有限的空间存储高质的音频。

Dolby Digital Plus

下一代 HD DVD 的音频编码,是 AC3 的升级版本,支持 7.1 甚至更多的声道,码率范围也有大幅提升。

MLP Lossless

HD DVD 上的无损音频编码,同样为 Dolby 公司开发,最高采样能达到 192KHz,也为

DVD-Audio 的音频编码标准。

DTS

DTS 最初是为电影院开发的音频系统,后来才应用于 DVD 中。它是 AC3 的有力竞争者,不过在 DVD 中只有 D9 才能够看到他的身影,虽然广大发烧友都在鼓吹它的效果超过

AC3,但是测试出来并不如想象中的那么好,特别是高频方面不及 AC3。

DTS-HD

下一代 HD DVD 的音频编码,它和 Dolby Digital Plus 都被指定为强制编码,看来在未来会和 Dolby 平分秋色。

LPCM

没有压缩的 PCM 编码,只能存储两声道,但是采样率能够高达 96KHz,是 DVD-Video 中音质最好的一种,当然体积也是最大的。

MPEG Audio

主要是 MP2,应用于 PAL 制式的 DVD,压缩率高,支持多声道(MPEG-2 规范都支持多声道)。

DSD

这个似乎扯远了,不过作为 DVD-Audio 的最大竞争对手 SACD,顺带介绍一下。DSD(Direct StreamDigital)直接比特流数字,由 Sony 推出,能够避免传统 PCM 编码的弊端,达到非常高的品质。最高采样和 DVD-Audio一样,192KHz。

H.26X系列

“ITU(InternationalTelecommunication Union)国际电传视讯联盟”主导的编码系列,主要应用于实时视频通信领域,如会议电视等。由于现在 MPEG系列也开始向这个领域进军,所以这两个组织也开始了密切的合作,如最近热门的 AVC/H.264,就是由 ITU 旗下的“VCEG(VideoCoding Experts Group)视频编码专家组”和“ISO(International Organization

forStandardization)国际标准组织”旗下的“MPEG (Moving Pictures ExpertsGroup)运动图象专家组”联合制作发布的。

H.261

H.261是ITU-T为在综合业务数字网(ISDN)上开展双向声像业务(可视电话、视频会议)而制定的,它是最早的运动图像压缩标准,它详细制定了视频编码的各个部分,包括运动补偿的帧间预测、DCT变换、量化、熵编码,以及与固定速率的信道相适配的速率控制等部分。

H.263

H.263是ITU-T为低于64kb/s的窄带通信信道制定的视频编码标准,它是在H.261基础上发展起来的。

H.263+

H.263 的第二个版本,加入了许多新技术来扩展 H.263 的应用范围。

H.263++

在 H.263+ 上增加了几个选项,来增强码流在恶劣信道上的抗误码性能,同时提高增强编码效率。

H.264

也就是前面提到的 MPEG-4AVC。H.264是由ISO/IEC与ITU-T组成的联合视频组(JVT)制定的新一代视频压缩编码标准。在ISO/IEC中该标准命名为AVC(Advanced Video Coding),作为MPEG-4标准的第10个选项;在ITU-T中正式命名为H.264标准。

3GPP

现在通讯领域最热门的话题之一,既然说了 MPEG 和 ITU,和这两个千丝万缕的 3GPP 应用就不得不提了。3GPP 的视频采用了MPEG-4 和 H.263 两种编码,可能还将加入 H.264,音频方面音乐压缩采用 AAC,语音则采用先进的 AMR,另一个aacPlus 随着 V2 版本的推出,底码率下的效果更加突出,也有望加入标准。

Windows Media系列

Microsoft 公司主导的音频视频编码系列,它的出现主要是为了进行网络视频传输,现在已经向 HDTV 方面进军,开发了 WMV HD 应用。

Microsoft MPEG-4 v1/v2/v3

最早的 ASF 采用的视频编码,基于 MPEG-4 技术开发,DivX3.11 就是基于 Microsoft

MPEG-4 v3 破解出来的,后来才进行了重写。

Windows Media Video 7

Microsoft正式开发的第一个 Windows Media Video,开始脱离了 MPEG-4,和 MPEG-4不兼容,从这一点上可见微软的野心。可惜这个版本压缩效果非常烂,打破了微软一飞冲天的美梦,不过它在压缩速度上非常快,现在网络上有很多采用这种格式压缩的 WMV。

Windows Media Video 8

在 WMV7 基础上改进的版本,质量上面进不了不少。

Windows Media Video 9

微软的重头戏,不光是这一个编码,V9 系列更是一个平台,让微软有足够的能力挑战

MPEG,ITU等标准化组织。虽然这个版本并没有微软吹得那么厉害,特别是低码率下比较差,不过跟以前版本相比进步还是非常多的。特别是 WMV HD的应用,让微软也跻身视频标准领域。

Windows Media Video 9 Professional

WMV HD 应用的编码,和 WMV9 兼容,在高比特率上进行了优化,画面非常优秀。(不过几十M的码率能不优秀吗?全是体积换来的。)

Windows Media Video 9 Advanced Profile

随着 Windows Media Player 10 推出的编码器,能够更进一步控制 WMV9 的质量。但是不能在老版本的 WMP9 上播放,也就是不兼容老版本的 WMP9,真不知微软在搞什么?

Windows Media Video 9 Screen

静态屏幕无损压缩编码,质量非常好,压缩率高,只针对如屏幕等变化非常小的环境。

Windows Media Video 9 Image

静态图像压缩编码。

Windows Media Audio v1/v2

微软最早的音频编码技术,用于 ASF 中,后来被破解也用在 DivX Audio 中,质量比较差。

Windows Media Audio 7/8/9

随着各种不同的 WMV 而推出的相应的音频编码,质量节节提升,不过还没有达到 64kbps

CD音质的神化。

Windows Media Audio 9 Professional

WMA9 中出现的新编码,主要用于多声道编码和高采样率音频的编码,质量不错。

Windows Media Audio 9 Voice

针对语音的编码,最高 20kbps ,不过和 AMR 相比,效果就太差了。

Windows Media Audio 9 Lossless

无损音频编码,可以完美保留CD原质量,是CD备份的不错选择,不过代价是体积过大。

RealMedia系列

RealNetworks 所开发的系列编码技术,也是主要用于网络传输,在底码率下表现不错。

RealVideo G2

早期的 RealVideo 编码,质量比较糟糕,不过那时在网络上算是很先进了,毕竟当时能用网络看视频的人不多。

RealVideo 8

随着 RealPlayer 8 推出的视频格式,是现在主流的网络视频编码之一。编码速度较慢,质量也只能算一般。

RealVideo 9

RealNetworks 开发的新一代编码,质量进步了很多,特别是在底码率下,而且编码速度很快,做到了速与质的很好统一。

RealVideo 10

在 RealVideo 9 基础上加入了一些参数,如 EHQ 等,更加精确控制码率,和 RealVideo 9 兼容。

RealAudio Cook

早期的音频编码,但是在现在看来,仍然质量不错,可惜最高码率 96kbps。应用到了两代音频编码中:RealAudio G2、RealAudio 8。

RealAudio Cook Multichannel

Cook 的改进版本,增加了5.1声道的支持,应用到了 RealAudio 10 Multichannel 中。

RealAudio Sipro

采用了 Sipro 语音编码技术,主要针对语音编码,应用在更早期的 RealAudio 4.0、RealAudio

5.0 中。

RealAudio ATRAC3

Sony 公司开发的 ATRAC3 编码,被 RealNetworks 公司购买过来应用到了 RealAudio 8

中,以弥补 Cook 高码率上的不足。

RealAudio AAC

AAC 音频编码,用于 RealAudio 10 中。

RealAudio aacPlus

aacPlus 音频编码,用于 RealAudio 10 中,不过并没有随 RealProducer 发行,需要单独购买。

RealAudio Lossless

无损音频编码。

QuickTime系列

QuickTime 并不是一个编码,而是一个多媒体平台,它的上面有众多编码,这里只介绍几个主流的编码器。

Sorenson Video 2

Sorenson Media 公司开发的编码器,主要用于 QuickTime 4 的视频编码,质量较差。

Sorenson Video 3

Sorenson Media 公司随 QuickTime 5 发布的编码器,质量很不错,已经成为 QuickTime 的标准视频编码,网络上大部分电影预告片都采用这种编码。

Apple MPEG-4

Apple 公司自己开发的 MPEG-4 编码器,随 QuickTime 6 发布,质量很差。

Apple H.264

Apple 公司自己开发的 H.264 编码器,随 QuickTime 7 发布,支持 HDTV。

QDesign Music 1

QDesign 公司开发的音频编码器,这个版本现在已经开不到它的身影了。

QDesign Music 2

QDesign Music 的第二个版本,也是最后一个版本,在时下这些先进的音频编码面前,它已经没有生命力了,主要应用于网上的电影预告片。

Qualcomm PureVoice

Qualcomm 公司开发的语音编码器,质量不错。

Apple MPEG-4 AAC

Apple 公司自己开发的 AAC 编码器,质量非常好,是最优秀的 AAC 编码器之一,随

QuickTime 6 发布。

AMR Narrowband

AMR 语音编码器,这个版本只支持 AMR-NB。

Apple Lossless

Apple 公司开发的无损音频编码,主要应用于 iTunes 抓取 CD。

Ogg系列

Ogg 是 基金会发起的一个开放源代码项目,包括视频音频,服务器,传输系统,客户端,硬件支持等,最为大家熟悉的就是音频 Ogg Vorbis,它被认为是迄今为止 128kbps

码率上最好的编码器。

Ogg Theora

Ogg 的视频编码,基于 On2 VP3 开发,现在还处于测试阶段。

Ogg Vorbis

Ogg 的音频编码,质量非常优秀,特别是低码率下,支持多声道。最高码率能够达到

500kbps,是 AAC 的有力竞争者。

Ogg Speex

Ogg 的语音编码,专门针对低码率的语音编码。

Ogg FLAC

Ogg 的无损音频编码。

On2 VPX系列

On2 公司开发了一系列优秀的视频编码,现在应用得最多的恐怕是 Nullsoft Video 的视频,它们就采用了 VP3,VP5,VP6 视频编码。

VP3

已经作为开放源代码公布,现在是 Ogg Theora 项目,当然,Theora 的质量可比 VP3 好多了。

VP4

On2 公司当年吹牛全球最好的视频编码,后来证明质量很一般。

VP5

至今还很神秘,On2 并没有放出来,只在 Nullsoft Video 里面见到他的身影。

VP6

从一开始,On2 就把这个编码器提供给大家下载,质量还是不错的。不过最近似乎又关闭了,主页上只有一个解码器。

VP7

On2 最新的编码器,在 VP6 上有不少进步。

Flash Video

Macromedia公司推出的多媒体格式,主要用于在 Flash 中压缩视频。视频采用 Sorenson 公司的 Spark 编码器,音频采用MP3,质量比较差。传闻下一代 Flash Video 准备使用 On2

VP6 ,那将让视频质量得到一个量的提升。

容器

MPG

MPEG编码采用的容器,具有流的特性。里面又分为 PS,TS 等,PS 主要用于 DVD 存储,TS 主要用于 HDTV。

VOB

DVD采用的容器格式,支持多视频多音轨多字幕章节等。

MP4

MPEG-4编码采用的容器,基于 QuickTime MOV 开发,具有许多先进特性。

3GP

3GPP视频采用的格式,主要用于流媒体传送。

ASF

Windows Media 采用的容器,能够用于流传送,还能包容脚本等。

RM

RealMedia 采用的容器,用于流传送。

MOV

QuickTime 的容器,恐怕也是现今最强大的容器,甚至支持虚拟现实技术,Java 等,它的变种 MP4,3GP都没有这么厉害。

MKV

MKV 它能把 Windows Media Video,RealVideo,MPEG-4 等视频音频融为一个文件,而且支持多音轨,支持章节字幕等。

OGG

Ogg 项目采用的容器,具有流的特性,支持多音轨,章节,字幕等。

OGM

Ogg 容器的变种,能够支持基于 DirectShow 的视频音频编码,支持章节等特性。

AVI

最常见的音频视频容器。

NSV

Nullsoft Video 的容器,用于流传送。

WAV

一种音频容器,大家常说的 WAV 就是没有压缩的 PCM 编码,其实 WAV 里面还可以包括 MP3 等其他 ACM 压缩编码。

MP4文件格式中,所有的内容存在一个称为movie的容器中。一个movie可以由多个tracks组成。每个track就是一个随时间变化的媒体序列,例如,视频帧序列。track里的每个时间单位是一个sample,它可以是一帧视频,或者音频。sample按照时间顺序排列。注意,一帧音频可以分解成多个音频sample,所以音频一般用sample作为单位,而不用帧。MP4文件格式的定义里面,用sample这个单词表示一个时间帧或者数据单元。每个track会有一个或者多个sample descriptions。track里面的每个sample通过引用关联到一个sample

description。这个sample descriptions定义了怎样解码这个sample,例如使用的压缩算法。

与其他的多媒体文件格式不同的是,MP4文件格式经常使用几个不同的概念,理解其不同是理解这个文件格式的关键。

这个文件的物理格式没有限定媒体本身的格式。例如,许多文件格式将媒体数据分成帧,头部或者其他数据紧紧跟随每一帧视频,!!!TODO(例如MPEG2)。而MP4文件格式不是如此。

文件的物理格式和媒体数据的排列都不受媒体的时间顺序的限制。视频帧不需要在文件按时间顺序排列。这就意味着如果文件中真的存在这样的一些帧,那么就有一些文件结构来描述媒体的排列和对应的时间信息。

MP4文件中所有的数据都封装在一些box中(以前叫atom)。所有的metadata(媒体描述元数据),包括定义媒体的排列和时间信息的数据都包含在这样的一些结构box中。MP4文件格式定义了这些这些box的格式。Metadata对媒体数据(例如,视频帧)引用说明。媒体数据可以包含在同一个的一个或多个box里,也可以在其他文件中,metadata允许使用URLs来引用其他的文件,而媒体数据在这些引用文件中的排列关系全部在第一个主文件中的metadata描述。其他的文件不一定是MP4文件格式,例如,可能就没有一个box。

有很多种类的track,其中有三个最重要,video track包含了视频sample;audio track包含了audio sample;hint track稍有不同,它描述了一个流媒体服务器如何把文件中的媒体数据组成符合流媒体协议的数据包。如果文件只是本地播放,可以忽略hint track,他们只与流媒体有关系。

Physical structure of the media

Box定义了如何在sample table中找到媒体数据的排列。这包括data reference(数据引用), the

sample size table, the sample to chunk table, and the chunk offset table. 这些表就可以找到track中每个sample在文件中的位置和大小。

data reference允许在第二个媒体文件中找到媒体的位置。这样,一部电影就可以由一个媒体数据库中的多个不同文件组成,而且不用把它们全部拷贝到另一个新文件中。例如,对视频编辑就很有帮助。

为了节约空间,这些表都很紧凑。另外,interleave不是sample by sample,而是把单个track的几个samples组合到一起,然后另外几个sample又进行新的组合,等等。一个track的连续几个sample组成的单元就被称为chunk。每个chunk在文件中有一个偏移量,这个偏移量是从文件开头算起的,在这个chunk内,sample是连续存储的。

这样,如果一个chunk包含两个sample,第二个sample的位置就是chunk的偏移量加上第一个sample的大小。chunk offset table说明了每个chunk的偏移量,sample to chunk table说明了sample序号和chunk序号的映射关系。

注意chunk之间可能会有死区,没有任何媒体数据引用到这部分区域,但是chunk内部不会有这样的死区。这样,如果在节目编辑的时候,不需要一些媒体数据,就可以简单的留在那里,而不用引用,这样就不用删除它们了。类似的,如果媒体存放在第二个文件中,但是格式不同于MP4文件格式,这个陌生文件的头部或者其他文件格式都可以简单忽略掉。

Temporal structure of the media

文件中的时间可以理解为一些结构。电影以及每个track都有一个timescale。它定义了一个时间轴来说明每秒钟有多少个ticks。合理的选择这个数目,就可以实现准确的计时。一般来说,对于audio track,就是audio的sampling rate。对于video track,情况稍微复杂,需要合理选择。例如,如果一个media TimeScale是30000,media sample durations是1001,就准确的定义了NTSC video的时间格式(虽然不准确,但一般就是29.97),and provide 19.9

hours of time in 32 bits.

Track的时间结构受一个edit list影响,有两个用途:全部电影中的一个track的一部分时间片断变化(有可能是重用);空白时间的插入,也就是空的edits。特别注意的是如果一个track不是从节目开头部分开始,edit list的第一个edit就一定是空的edit。

每个track的全部duration定义在文件头部,这就是对track的总结,每个sample有一个规定的duration。一个sample的准确描述时间,也就是他的时间戳(time-stamp)就是以前的sample的duration之和。

Interleave

文件的时间和物理结构可以是对齐的,这表明媒体数据在容器中的物理顺序就是时间顺序。另外,如果多个track的媒体数据包含在同一个文件中,这个媒体数据可以是interleaved。一般来说,为了方便读取一个track的媒体数据,同时保证每个表紧凑,以一个合适的时间间隔(例如1秒)做一次interleave,而不是sample by sample。这样就可以减少chunk的数据,减小chunk offset table的大小。

Composition

如果多个audio track包含在同一个文件中,他们有可能被混合在一起进行播放,并且由一个总track volume和左/右balance控制。

类似的,video track也可以根据各自的层次序列号(从后向前)和合成模式进行混合。另外,每个track可以用一个matrix进行变换,也可以全部电影用一个matrix进行变换。这样既可以进行简单操作(例如放大图像,校正90º 旋转),也可以做更复杂的操作(例如shearing,

arbitrary rotation)。

这个混合方法只是非常简单,是一个缺省的方法,MPEG4的另一份文档会定义更强有力的方法(例如MPEG-4 BIFS)。

Darwin Streaming Server里面有一些很好的工具,可以帮助分析mp4文件格式。

但是如果可以自己逐字节的parse文件,可以更好的了解mp4文件格式。这里我就逐字节的分析文件结构。文件例子是DSS里面包含的sample_4

本文标签: 编码视频音频媒体文件