Video Coding Format|视频编码格式|媒体理论|基础理论|历史|发展

Video Coding Format

Video Coding Format视频编码格式(或者有时是视频压缩格式)是用于存储或传输数字视频内容(例如在数据文件或比特流中)的内容表示格式。 它通常使用标准化视频压缩算法,最常见的是基于离散余弦变换 (DCT) 编码和运动补偿。 能够对特定视频编码格式进行压缩或解压缩的特定软件、固件或硬件实现称为视频编解码器。

一些视频编码格式由称为视频编码规范的详细技术规范文档记录。 一些这样的规范由标准化组织编写并批准为技术标准,因此被称为视频编码标准。 “标准”一词有时也用于事实上的标准和正式标准。

使用特定视频编码格式编码的视频内容通常与多媒体容器格式(例如 AVI、MP4、FLV、RealMedia 或 Matroska)内的音频流(使用音频编码格式编码)捆绑在一起。 因此,用户通常没有 H.264 文件,而是有 .mp4 视频文件,它是包含 H.264 编码视频的 MP4 容器,通常与 AAC 编码音频一起。 多媒体容器格式可以包含多种不同视频编码格式中的任何一种; 例如,MP4 容器格式可以包含 MPEG-2 Part 2 或 H.264 视频编码格式等视频。 另一个例子是文件类型 WebM 的初始规范,它指定了容器格式 (Matroska),而且还准确指定了 Matroska 容器内部使用的视频 (VP8) 和音频 (Vorbis) 压缩格式,即使 Matroska 容器格式本身 能够包含其他视频编码格式(VP9视频和Opus音频支持后来被添加到WebM规范中)。

格式和编解码器之间的区别Distinction between format and codec

格式是编解码器生成或使用的数据的布局计划。A format is the layout plan for data produced or consumed by a codec.

尽管 H.264 等视频编码格式有时被称为编解码器,但规范与其实现之间存在明显的概念差异。 视频编码格式在规范中进行了描述,并且将给定视频编码格式的数据从未压缩视频编码/解码到未压缩视频的软件、固件或硬件是这些规范的实现。 打个比方,视频编码格式H.264(规范)对于编解码器OpenH264(具体实现)来说就像C编程语言(规范)对于编译器GCC(具体实现)一样。 请注意,对于每个规范(例如 H.264),可能有许多编解码器实现该规范(例如 x264、OpenH264、H.264/MPEG-4 AVC 产品和实现)。

这种区别在文献中的术语并没有得到一致的反映。 H.264 规范调用了 H.261、H.262、H.263 和 H.264 视频编码标准,并且不包含“编解码器”一词。 开放媒体联盟明确区分了 AV1 视频编码格式和他们正在开发的随附编解码器,但将视频编码格式本身称为视频编解码器规范。 VP9规范将视频编码格式VP9本身称为编解码器。

作为合并的一个例子,Chromium 和 Mozilla 的页面列出了它们的视频格式,支持这两种视频编码格式,例如 H.264 编解码器。 另一个例子,在思科宣布免费视频编解码器时,新闻稿将 H.264 视频编码格式称为编解码器(“通用视频编解码器的选择”),但称思科的实现为 H.264 编码器/解码器 此后不久即成为编解码器(“开源我们的 H.264 编解码器”)。

视频编码格式并不规定实现该格式的编解码器使用的所有算法。 例如,视频压缩通常工作的很大一部分是通过查找视频帧之间的相似性(块匹配),然后通过复制先前编码的相似子图像(例如宏块)并在必要时添加小的差异来实现压缩。 找到此类预测变量和差异的最佳组合是一个 NP 难题,这意味着实际上不可能找到最佳解决方案。 虽然视频编码格式必须支持比特流格式中的跨帧压缩,但不需要不必要地强制使用特定算法来查找此类块匹配和其他编码步骤,因此实现视频编码规范的编解码器在其选择上具有一定的优化和创新自由度 算法。 例如,H.264 规范的第 0.5 节规定编码算法不是该规范的一部分。 算法的自由选择还允许对相同的视频编码格式进行不同的时空复杂度权衡,因此实时直播可以使用快速但空间效率低下的算法,而用于以后批量生产的一次性 DVD 编码可以使用长编码 -节省空间的编码时间。

历史History

模拟视频压缩的概念可以追溯到 1929 年,当时英国的 R.D. Kell 提出了仅传输逐帧变化的场景部分的概念。 数字视频压缩的概念可以追溯到 1952 年,当时贝尔实验室的研究人员 B.M. Oliver 和 C.W. Harrison 提出在视频编码中使用差分脉冲编码调制 (DPCM)。 1959年,NHK研究人员Y. Taki、M. Hatori和S. Tanaka提出了帧间运动补偿的概念,他们提出了时间维度上的预测帧间视频编码。 1967年,伦敦大学研究人员A.H. Robinson和C. Cherry提出了游程编码(RLE),一种无损压缩方案,以减少模拟电视信号的传输带宽。

最早的数字视频编码算法要么针对未压缩视频,要么使用无损压缩,这两种方法对于数字视频编码来说效率低且不切实际。 数字视频于 20 世纪 70 年代推出,最初使用未压缩的脉冲编码调制 (PCM),标清 (SD) 视频需要 45–200 Mbit/s 左右的高比特率,比电信带宽高出 2,000 倍(高达 到 100 kbit/s)直到 20 世纪 90 年代才可用。 同样,未压缩的高清 (HD) 1080p 视频需要超过 1 Gbit/s 的比特率,明显高于 2000 年代的可用带宽。

运动补偿 DCTMotion-compensated DCT


实用的视频压缩随着运动补偿 DCT (MC DCT) 编码的发展而出现,也称为块运动补偿 (BMC) 或 DCT 运动补偿。 这是一种混合编码算法,结合了两种关键的数据压缩技术:空间维度的离散余弦变换(DCT)编码和时间维度的预测运动补偿。

DCT编码是一种有损块压缩变换编码技术,由Nasir Ahmed于1972年在堪萨斯州立大学工作时首次提出,最初旨在用于图像压缩。随后Ahmed将其发展为实用的图像压缩算法 T. Natarajan 和 K. R. Rao 于 1973 年在德克萨斯大学发表,并于 1974 年出版。

另一个关键的发展是运动补偿混合编码。 1974年,南加州大学的Ali Habibi引入了混合编码,它将预测编码与变换编码结合起来。 他研究了几种变换编码技术,包括 DCT、Hadamard 变换、傅里叶变换、倾斜变换和 Karhunen-Loeve 变换。 然而,他的算法最初仅限于空间维度的帧内编码。 1975年,John A. Roese和Guner S. Robinson将Habibi的混合编码算法扩展到时间维度,在空间维度使用变换编码,在时间维度使用预测编码,发展了帧间运动补偿混合编码。 对于空间变换编码,他们尝试了不同的变换,包括 DCT 和快速傅里叶变换 (FFT),为它们开发了帧间混合编码器,发现 DCT 由于复杂性降低而效率最高,能够 将可视电话场景的图像数据压缩至每像素 0.25 位,其图像质量与需要每像素 2 位的典型帧内编码器相当。
DCT 由 Wen-Hsiung Chen 应用于视频编码,他与 C.H. 一起开发了快速 DCT 算法。 Smith 和 S.C. Fralick 于 1977 年成立了压缩实验室,将 DCT 技术商业化。 1979 年,Anil K. Jain 和 Jaswant R. Jain 进一步开发了运动补偿 DCT 视频压缩。 这导致 Chen 在 1981 年开发了一种实用的视频压缩算法,称为运动补偿 DCT 或自适应场景编码。运动补偿 DCT 后来从 20 世纪 80 年代末开始成为视频压缩的标准编码技术。

视频编码标准Video coding standards

第一个数字视频编码标准是 H.120,由 CCITT(现在的 ITU-T)于 1984 年制定。H.120 由于性能太差而无法在实践中使用。 H.120 使用运动补偿 DPCM 编码, 一种无损压缩算法,但对于视频编码效率较低。 20 世纪 80 年代末,许多公司开始尝试离散余弦变换 (DCT) 编码,这是一种更有效的视频编码压缩形式。 CCITT 收到了 14 项基于 DCT 的视频压缩格式提案,而只有一项基于矢量量化 (VQ) 压缩的提案。 H.261 标准是基于运动补偿 DCT 压缩而开发的。 H.261 是第一个实用的视频编码标准,并使用了许多公司授权的专利,包括 Hitachi、PictureTel、NTT、BT 和 Toshiba 等。 自 H.261 以来,运动补偿 DCT 压缩已被随后的所有主要视频编码标准(包括 H.26x 和 MPEG 格式)采用。

MPEG-1 由运动图像专家组 (MPEG) 于 1991 年开发,旨在压缩 VHS 质量的视频。1994 年由 MPEG-2/H.262 继承,后者是在获得专利许可的情况下开发的 来自多家公司,主要是索尼、汤姆逊和三菱电机。 MPEG-2 成为 DVD 和 SD 数字电视的标准视频格式。 其运动补偿DCT算法能够实现高达100:1的压缩比,促进了视频点播(VOD)和高清电视(HDTV)等数字媒体技术的发展。 1999年,MPEG-4/H.263紧随其后,这是视频压缩技术的一次重大飞跃。 它使用了多家公司授权的专利,主要是三菱、日立和松下。

截至 2019 年,使用最广泛的视频编码格式是 H.264/MPEG-4 AVC。 它于 2003 年开发,使用了许多组织授权的专利,主要是 Panasonic、Godo Kaisha IP Bridge 和 LG Electronics。 与其前身使用的标准 DCT 相比,AVC 使用整数 DCT。 H.264 是蓝光光盘的视频编码标准之一; 所有蓝光光盘播放器都必须能够解码 H.264。 它还广泛用于流媒体互联网源,例如来自 YouTube、Netflix、Vimeo 和 iTunes Store 的视频、Web 软件(例如 Adobe Flash Player 和 Microsoft Silverlight)以及各种地面高清电视广播(高级电视系统委员会标准) 、ISDB-T、DVB-T 或 DVB-T2)、有线 (DVB-C) 和卫星 (DVB-S2)。

许多视频编码格式的一个主要问题是专利,这使得使用成本昂贵,或者由于海底专利而可能面临专利诉讼的风险。 许多最近设计的视频编码格式(例如 Theora、VP8 和 VP9)背后的动机是创建一个仅由免版税专利覆盖的(自由)视频编码标准。 专利状况也一直是主流网络浏览器在 HTML5 视频标签内支持哪些视频格式的选择的主要争论点。

当前一代视频编码格式是 2013 年推出的 HEVC (H.265)。AVC 使用块大小为 4×4 和 8×8 的整数 DCT,而 HEVC 使用块大小在 4×4 到 32×32 之间的整数 DCT 和 DST 变换。 HEVC 拥有大量专利,其中大部分专利属于三星电子、GE、NTT 和 JVC Kenwood。 它目前正受到旨在免费许可的 AV1 格式的挑战。 截至 2019 年,AVC 是迄今为止最常用的视频内容录制、压缩和分发格式,有 91% 的视频开发者使用,其次是 HEVC,有 43% 的开发者使用。

无损、有损和未压缩视频编码格式Lossless, lossy, and uncompressed video coding formats


消费者视频通常使用有损视频编解码器进行压缩,因为这会导致文件比无损压缩小得多。 虽然有明确设计用于有损或无损压缩的视频编码格式,但 Dirac 和 H.264 等某些视频编码格式同时支持这两种格式。

未压缩视频格式(例如 Clean HDMI)是一种无损视频形式,在某些情况下使用,例如通过 HDMI 连接将视频发送到显示器时。 一些高端相机还可以直接捕捉这种格式的视频。

帧内视频编码格式intra-frame video coding formats

帧间压缩使编码视频序列的编辑变得复杂。 相对简单的视频编码格式的一个子类是帧内视频格式,例如 DV,其中视频流的每一帧都是独立压缩的,而不参考流中的其他帧,并且不尝试利用相关性 随着时间的推移,在连续的图片之间进行更好的压缩。 一个例子是 Motion JPEG,它只是一系列单独 JPEG 压缩的图像。 这种方法快速且简单,但代价是编码的视频比支持帧间编码的视频编码格式大得多。

由于帧间压缩将数据从一帧复制到另一帧,因此如果简单地剪切掉原始帧(或在传输中丢失),则无法正确重建后续帧。 在视频编辑时对帧内压缩视频进行“剪切”几乎与编辑未压缩视频一样简单:找到每一帧的开头和结尾,然后简单地逐位复制想要保留的每一帧,然后丢弃 框架一个人不想要的。 帧内和帧间压缩之间的另一个区别是,对于帧内系统,每个帧使用相似的数据量。 在大多数帧间系统中,某些帧(例如 MPEG-2 中的“I 帧”)不允许从其他帧复制数据,因此它们比附近的其他帧需要更多的数据。

可以构建一个基于计算机的视频编辑器,该编辑器可以发现当其他帧需要编辑 I 帧时所引起的问题。 这使得 HDV 等新格式可用于编辑。 然而,这个过程比编辑相同图像质量的帧内压缩视频需要更多的计算能力。 但是,这种压缩对于任何音频格式都不是非常有效。

个人资料和级别Profiles and levels

视频编码格式可以定义对编码视频的可选限制,称为配置文件和级别。 可以有一个解码器仅支持解码给定视频格式的配置文件和级别的子集,例如使解码器程序/硬件更小、更简单或更快。

配置文件限制允许使用哪些编码技术。 例如,H.264 格式包括配置文件基线、主要和高(以及其他)。 虽然所有配置文件都支持 P 切片(可以根据前面的切片进行预测),但主配置文件和高配置文件都支持 B 切片(可以根据前面和后面的切片进行预测),但在基线中不支持。

级别是对最大分辨率和数据速率等参数的限制。


延伸阅读Further Reading(更新中)

操作系统

电影理论

多媒体理论

媒体格式理论

NLE非线性编辑软件

Final Cut Pro 生态系统工具

音频音效相关-制作音乐 Production Music

音频音效相关-预告片音乐 Trailer Music


发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注