MP4
1.1、MP4封装格式简介

MP4封装格式是由MPEG-4 part 14定义的。

MP4MPEG-4不是同一个概念,MPEG-4中包含有MP4的定义,还包含其他一些规范的定义。

MP4封包格式对应的文件的后缀名通常是.mp4

MP4封包格式是目前最通用的,应用最广泛的。

1.2、MP4格式详解

文件中有一个音频轨和一个视频轨,每个轨可以是若干种编码格式之一,任意组合后,以一种交叉的方式存贮。

1.3、支持MP4格式的产品

某产品号称支持MP4播放,如果只此一句话,没有其他更多细节,那么这个说法太笼统了。

因为MP4规范包含很多可选择的内容,我们应该至少弄清楚以下问题:

理论上,我把一个场景的画面一帧接一帧,不加压缩的直接存放(你可以大致想象成把一堆BMP文件一个接一个的复制在一 起),加个简单的文件头,也可以生成一个巨大的*.mp4文件,还可以省掉音频。播放这种文件是没有任何技术可言的, 但它的文件名也确实是*.mp4。现在假设我生产了一台设备,仅支持这种格式,是不是也可以在盒子上印上支持MP4播放呢? 你买回去,复制一个网上下载的*.mp4文件,结果发现根本不能播放。现在你来找我,我告诉你说我只能支持“视频为未压缩YUV以及不带音频轨的mp4文件”,算不算骗 人呢?就算不举这么极端的例子,一般*.mp4文件中常见的视频音频格式也有多种,一个产品要做到支持所有的格式是很难的。 所以,如果要准确的描述,应该写清楚类似“支持视频压缩格式为H.264/AVC, 音频压缩格式为AMRAAC*.mp4文件”。

AMRAMR-NB还是AMR-WB,还是两个都支持;AACAAC-LC还是AAC-HE,还是两个都支持等更多细节。

刚出来手持媒体播放器的时候,有些号称支持“xvid视频轨和mp3音频轨的.avi文件”。 你以为写得够清楚了吧,结果把下载的一些符合这个格式的文件复制上去,有些能放,有些不能放,有些放一段黑一段。原因就在于, 设备支持的是“不带B帧的xvid”(即simple profile),而一般以PC播放为目的的xvid,在压缩时都是用到了B帧的。 B帧可以提高画质和文件大小控制精度,但对编码和解码的运算要求都提高了。一些设备硬件能力达不到这个要求的设备,就在这些小地方省略一些细节。 最终结果就是,用户如果真要把下载的视频弄上去播放,还要再转换一次。用户看到盒子上的说明,以为他说的xvid是“我平时下载的那种xvid”, 但厂家实际上暗示的是“我们只支持带某种限制的xvid,你平时下载那种一般都不符合我的要求”。

当然,随着软硬件水平的提高以及市场竞争,这种误导型的说明正在减少。不过如果有比较确切的格式需求,最好还是先搞清楚这些细节。