Android 音视频开发之编码格式和容器格式
- Codec Format 编码格式,指的是多媒体文件中音视频的编码方式(比如视频编码格式:H.264/AVC、H.265/HEVC、VP8、VP9、AV1 和 WMV 等,音频编码格式:MP3、AAC、Opus、WMA、FLAC、ALAC、APE 和 WAV 等)
- Container Format 容器格式(也称为封装格式),是一种用于将视频、音频和元数据(比如字幕、标题、作者、时长、章节信息等)等多种不同类型的媒体数据封装在一起的文件格式(其决定了文件的扩展名),有利于存储和传输(比如 MP4、MKV、AVI、ASF、WebM、MOV 和 FLV 等)
- 编码格式和容器格式密切相关,但它们的职责不同,编码格式指用于压缩和解压缩原始音视频数据的算法,容器格式负责封装和存储编码后的数据,两者共同配合工作以形成一个完整的多媒体文件,一种编码格式的音视频数据可以被封装到多种不同的容器格式中(比如 H.264/AVC 编码格式的视频可以封装在 MP4、MKV、AVI 等容器格式中),同样的一种容器格式也可以封装不同编码格式的音视频数据(比如 MP4 容器格式可以包含 H.264/AVC、H.265/HEVC 等视频编码格式和 MP3、AAC 等音频编码格式),在实际应用中可以根据具体需求选择合适的编码格式和容器格式组合,以达到最合适的存储、传输和播放的效果
视频编码格式
H.264/AVC(Advanced Video Coding 高级视频编码),对应 MPEG-4 Part 10(MPEG-4 标准的第 10 部分)
- H.264 是目前最流行的视频编码格式之一,提供了很高的压缩效率的同时还能保持良好的视频质量,广泛应用于蓝光光盘、数字电视、网络视频(如 YouTube、Netflix 和腾讯视频等)以及各种移动设备等领域
- 使用 H.264 对于某些类型的用途(比如免费软件和网页流媒体等)提供了免专利费用的选项,而在进行商业用途(如大规模视频内容分发)时需要支付专利授权费用,但由于其广泛的应用和良好兼容性,所以 H.264 仍然是目前最主流的视频编码标准之一
- 通常用于 MP4(.mp4)、MKV(.mkv)等容器格式
H.265/HEVC(High Efficiency Video Coding 高效率视频编码)
- H.265 是 H.264 的下一代标准,提供了更高的压缩效率和更好的视频质量,在相同的图像质量下,H.265 的压缩效率比 H.264 提高了一倍左右,能够节省更多的存储空间和带宽,支持 4K 和 8K 超高清视频,但也带来了更高的计算复杂度,而这个相对较高的复杂度对设备的性能要求也随之变得更高,正在逐渐普及
- 在使用 H.265 进行商业用途时需要支付专利费用,而且其专利授权问题比 H.264 更为复杂,曾引发多起法律纠纷
- 通常用于 MP4(.mp4)、MKV(.mkv)等容器格式
VP8(Video Processing 8 视频处理系列的第 8 个版本)
- VP8 是由 Google 开发的开源的视频编码格式,具有较高的压缩效率,而且使用无需支付专利费用(不过早期可能存在一些专利争议)
- 通常用于 WebM(.webm)、MKV(.mkv)等容器格式
VP9(Video Processing 9)
- VP9 是 VP8 的改进版,旨在提供比 H.265 还要更高的压缩效率
- 通常用于 WebM(.webm)、MKV(.mkv)等容器格式
AV1(AOMedia Video 1)
- AV1 是由 AOMedia 开放媒体联盟制定推出的一个开源、免版权费的视频编码格式,可以算作是 VP9 的改进版,目标是在于取代 VP9 并成为新一代领先的编码标准,提供优于 H.265 和 VP9 的压缩效率,旨在解决 H.265 昂贵的专利费用和复杂的专利授权问题,正在逐渐普及
- 由 Google(VP10)、Mozilla(Daala)、Cisco(Thor)、Amazon、Adobe、Intel、AMD、NVIDIA、ARM、Microsoft、Apple、YouTube、Netflix、Facebook、Huawei 和 Tencent 等多家公司组成
- 通常用于 MP4(.mp4)、MKV(.mkv)等容器格式
WMV(Windows Media Video)
- WMV 是由 Microsoft 开发的视频编码格式,提供了较高的压缩率,通常与 ASF 容器格式一起关联使用,比较流行,不过也逐渐被 MP4 、MKV 等更先进的容器格式所取代
- 通常用于 ASF(.wmv、.asf)等容器格式
音频编码格式
MP3(MPEG Audio Layer 3),有损编码格式
- MP3 是目前最流行的音频编码格式之一,提供了较好的压缩效率和音质(文件大小和良好的音质之间比较平衡),具有良好的兼容性和广泛的应用,通常应用于音乐下载分发、在线音乐播放、移动音乐播放器等领域
- 文件扩展名通常是 .mp3
AAC(Advanced Audio Coding 高级音频编码),有损编码格式
- AAC 是一种更先进的、更高效的音频编码格式(是 MP3 格式的后继者),提供更好的压缩效率和音质(在相同的比特率下 AAC 格式的音质通常优于 MP3 格式),支持更多的声道和采样率,能够提供更丰富的音频体验,被广泛应用于音频蓝光光盘、数字音频广播和 iTunes 音乐商店等领域,而且目前有许多在线音乐平台也逐渐采用 AAC 格式来提供音乐的质量
- 文件扩展名通常是 .aac
Opus(Opus Interactive Audio Codec),有损编码格式
- Opus 是一种新兴的开源的、免版权费的音频编码格式,旨在为互联网上的音频通信提供一种高质量的、低延迟的编码方案(比如 VoIP 网络电话、视频会议、语音聊天、流媒体服务、游戏语音聊天和直播等实时音频传输场景,是 WebRTC 和许多在线游戏的默认音频格式)
- 文件扩展名通常是 .opus
WMA(Windows Media Audio),有损编码格式
- WMA 最基本的版本是有损的(不过也有 WMA Lossless 无损压缩模式等其他版本),是由 Microsoft 开发的音频编码格式,旨在提供一种比 MP3 更高效的音频编码方案,同时还能保持较高的音质,不过市场份额在逐渐缩小
- 文件扩展名通常是 .wma
FLAC(Free Lossless Audio Codec 自由无损音频编码),无损编码格式
- FLAC 是一种开源的无损音频编码格式,支持多种采样率和声道数,压缩效率相对较高,可以在不损失音质的前提下,将音频文件压缩到原始文件的 50% - 60% 的大小,适合对音质要求较高的音乐爱好者,通常用于音乐收藏、专业音频制作等领域
- 文件扩展名通常是 .flac
ALAC(Apple Lossless Audio Codec),无损编码格式
- ALAC 是由 Apple 开发的无损音频编码格式,压缩效率和音质和 FLAC 差不多,与苹果的设备和软件兼容性良好,主要用于苹果设备和 iTunes 生态系统中,用户可以在苹果设备上播放无损音质的音乐
- 文件扩展名通常是 .alac
APE(Monkey's Audio),无损编码格式
- APE 是一种采用更先进的压缩算法的无损音频编码格式,APE 的压缩效率通常比其他无损格式(比如 FLAC)更高,文件体积更小,以其的高压缩率而闻名,但文件处理速度可能较慢,且兼容性不如 FLAC 等格式
- 文件扩展名通常是 .ape
WAV(Waveform Audio File Format 波形音频文件格式),无损编码格式
- WAV 是一种由 Microsoft 和 IBM 共同开发的无损音频格式,主要用于存储未压缩的音频数据,音质非常高,但文件大小较大,常用于专业音频录制、音频编辑和母带制作等领域
- 文件扩展名通常是 .wav
容器格式
MP4(MPEG-4 Part 14),对应 MPEG-4 Part 14(MPEG-4 标准的第 14 部分)
- MP4 是目前最流行的容器格式之一,具有良好的兼容性和广泛的应用,通常应用于网络视频、各种移动设备等领域
- 视频可以是 H.264/AVC、H.265/HEVC 或 AV1 等编码格式,音频可以是 AAC 或 MP3 等编码格式
- 文件的扩展名通常是 .mp4、.m4v(尤其是 Apple 平台),不过有时也会使用其他扩展名,比如 .m4a 常用于音频文件、.m4p 常用于表示受保护的音频文件、.m4r 常用于手机铃声(实际上就是经过特殊处理的 .m4a 音频文件)和 .m4b 常用于有声读物等
MKV(Matroska Video)
- MKV 是一种比较流行的、开源的容器格式,能够支持在一个文件中容纳多个音轨、字幕轨道以及其他元数据
- 视频可以是 H.264/AVC、H.265/HEVC 或 AV1 等编码格式,音频可以是 AAC 或 FLAC 等编码格式
- 文件的扩展名通常是 .mkv,不过有时也会使用其他扩展名,比如 .mka 通常用于音频文件、.mk3d 用于 3D 立体视频文件和 .mks 用于字幕文件等
AVI(Audio Video Interleave 音频视频交错)
- AVI 是由 Microsoft 开发的容器格式,是一种早期比较流行的容器格式,以其简单性和广泛的兼容性著称,不过不适合存储高清视频等大容量数据,逐渐被 MP4、MKV 等更先进的容器格式所取代
- 视频可以是 XviD、DivX(XviD、DivX 这两种都是基于 MPEG-4 Part 2 的技术)或 H.264/AVC 等编码格式,音频可以是 WAV 或 MP3 等编码格式
- 文件的扩展名通常是 .avi
ASF(Advanced Systems Format 高级系统格式)
- ASF 是由 Microsoft 开发的容器格式,通常与 WMV 和 WMA 等微软自家的编码格式关联使用,随着 MP4、MKV 等更通用容器格式的广泛应用,ASF 市场份额逐渐减少
- 视频可以是 WMV 或 DivX 等编码格式,音频可以是 WMA 或 MP3 等编码格式
- 虽然 ASF 是容器格式的正式名称(文件的扩展名也可以采用 .asf),但对应文件扩展名通常采用的是 .wmv(视频)或 .wma(音频),所以很容易出现混淆,有时可能会导致将这些扩展名与 WMV 和 WMA 编码格式联系起来,而不是容器格式
WebM
- WebM 是由 Google 开源的、免版权费的容器格式,是一种基于 MKV 的容器格式(可以看作是 MKV 的简化版),专为 Web 网络视频播放而设计,支持高效的视频和音频压缩技术,旨在提供高质量的视频传输和播放体验,支持网页浏览器(WebM 是 HTML5 视频标签支持的格式之一)和移动设备等场景
- 视频可以是 VP8 或 VP9 等编码格式,音频可以是 Opus 等编码格式
- 文件的扩展名通常是 .webm
MOV(QuickTime File Format)
- MOV 是由 Apple 开发的容器格式,也被称为 QuickTime 电影格式,支持高质量的视频和音频编码,广泛用于专业视频编辑和电影制作等领域
- 视频可以是 H.264/AVC 等编码格式,音频可以是 ALAC、MP3 或 AAC 等编码格式
- 文件的扩展名通常是 .mov
FLV(Flash Video)
- FLV 是由 Adobe 开发的容器格式,是一种曾经非常流行的、适用于流媒体传输的容器格式,特点是文件体积小、加载速度快,非常适合网络播放等应用,不过随着 Adobe Flash Player 的淘汰,FLV 格式的使用已经逐渐减少了
- 视频可以是 H.264/AVC 等编码格式,音频可以是 AAC 等编码格式
- 文件的扩展名通常是 .flv