本章知识点一览:
- 视频播放原理
- 视频文件封装格式
- 音视频编码方式简介
一、视频播放器原理:
我们播放的视频文件一般都是用一种封装格式封装起来的,封装格式的作用是什么呢?一般视频文件里不光有视频,还有音频,封装格式的作用就是把视频和音频打包起来。
所以我们先要解封装格式,看有哪些视频流和哪些音频流,此时的音频流和视频流都还是压缩数据,不能直接用于显示的,这就需要解码。下面是播放一个视频文件时的流程图。
根据上面流程图中的流程,我们从上至下一步步的来了解下每步骤的原理和实现方式。先来看下 视频封装格式。
二、视频文件封装格式
封装格式(也叫容器),就是将已经编码压缩好的视频轨和音频轨按照一定的格式放到一个文件中,也就是说仅仅是一个外壳,或者大家把它当成一个放视频轨和音频轨的文件夹也可以。说得通俗点,视频轨相当于饭,而音频轨相当于菜,封装格式就是一个碗,或者一个锅,用来盛放饭菜的容器。
下面是几种常用的 视频文件后缀类型 与其相对应的 封装格式。
视频文件格式 | 视频封装格式 |
---|---|
.avi | AVI(Audio Video Interleaved) |
.wmv、.asf | WMV(Windows Media Video) |
.mpg、.mpeg、.vob、.dat、.3gp、.mp4 | MPEG(Moving Picture Experts Group) |
.mkv | Matroska |
.rm、.rmvb | Real Video |
.mov | QuickTime File Format |
.flv | Flash Video |
下面详细介绍几个视频的封装格式:
1、AVI 格式,对应的文件格式为 .avi,全称 Audio Video Interleaved,是由 Microsoft 公司于 1992 年推出。这种视频格式的优点是图像质量好,无损 AVI 可保存 alpha 通道。缺点是体积过于庞大,并且压缩标准不统一,存在较多的高低版本兼容问题。
2、DV-AVI 格式,对应的文件格式为 .avi,英文全称 Digital Video Format,是由索尼、松下、JVC 等多家厂商联合提出的一种家用数字视频格式。常见的数码摄像机就是使用这种格式记录视频数据的。它可以通过电脑的 IEEE 1394 端口传输视频数据到电脑,也可以将电脑中编辑好的的视频数据回录到数码摄像机中。
3、WMV 格式,对应的文件格式是 .wmv、.asf,英文全称 Windows Media Video,是微软推出的一种采用独立编码方式并且可以直接在网上实时观看视频节目的文件压缩格式。在同等视频质量下,WMV 格式的文件可以边下载边播放,因此很适合在网上播放和传输。
4、MPEG 格式,对应的文件格式有 .mpg、.mpeg、.mpe、.dat、.vob、.asf、.3gp、.mp4 等等,英文全称 Moving Picture Experts Group,是由运动图像专家组制定的视频格式,该专家组于 1988 年组建,专门负责视频和音频标准制定,其成员都是视频、音频以及系统领域的技术专家。MPEG 格式目前有三个压缩标准,分别是 MPEG-1、MPEG-2、和 MPEG-4。MPEG-4 是现在用的比较多的视频封装格式,它为了播放流式媒体的高质量视频而专门设计的,以求使用最少的数据获得最佳的图像质量。
5、Matroska 格式,对应的文件格式是 .mkv,Matroska 是一种新的视频封装格式,它可将多种不同编码的视频及 16 条以上不同格式的音频和不同语言的字幕流封装到一个 Matroska Media 文件当中。
6、Real Video 格式,对应的文件格式是 .rm、.rmvb,是 Real Networks 公司所制定的音频视频压缩规范称为 Real Media。用户可以使用 RealPlayer 根据不同的网络传输速率制定出不同的压缩比率,从而实现在低速率的网络上进行影像数据实时传送和播放。
7、QuickTime File Format 格式,对应的文件格式是 .mov,是 Apple 公司开发的一种视频格式,默认的播放器是苹果的 QuickTime。这种封装格式具有较高的压缩比率和较完美的视频清晰度等特点,并可以保存 alpha 通道。
8、Flash Video 格式,对应的文件格式是 .flv,是由 Adobe Flash 延伸出来的一种网络视频封装格式。这种格式被很多视频网站所采用。
三、 音视频编码方式简介
1、视频编码方式
-
视频编码的作用:
将视频像素数据(RGB,YUV 等)压缩成视频码流,从而降低视频的数据量。
名称 | 推出机构 | 推出时间 | 目前使用领域 |
---|---|---|---|
HEVC(H.265) | MPEG/ITU-T | 2013 | 研发中 |
H.264 | MPEG/ITU-T | 2003 | 各个领域 |
MPEG4 | MPEG | 2001 | 不温不火 |
MPEG2 | MPEG | 1994 | 数字电视 |
VP9 | 2013 | 研发中 | |
VP8 | 2008 | 不普及 | |
VC-1 | Microsoft Inc. | 2006 | 微软平台 |
(1)、H.26X 系列
H.26X 由国际电传视讯联盟远程通信标准化组织(ITU-T)主导,包括 H.261、H.262、H.263、H.264、H.265。
H.261,主要用于老的视频会议和视频电话系统。是第一个使用的数字视频压缩标准。实质上说,之后的所有的标准视频编解码器都是基于它设计的。
H.262,等同于 MPEG-2 第二部分,使用在 DVD、SVCD 和大多数数字视频广播系统和有线分布系统中。
H.263,主要用于视频会议、视频电话和网络视频相关产品。在对逐行扫描的视频源进行压缩的方面,H.263 比它之前的视频编码标准在性能上有了较大的提升。尤其是在低码率端,它可以在保证一定质量的前提下大大的节约码率。
H.264,等同于 MPEG-4 第十部分,也被称为高级视频编码(Advanced Video Coding,简称 AVC),是一种视频压缩标准,一种被广泛使用的高精度视频的录制、压缩和发布格式。该标准引入了一系列新的能够大大提高压缩性能的技术,并能够同时在高码率端和低码率端大大超越以前的诸标准。
H.265,被称为高效率视频编码(High Efficiency Video Coding,简称 HEVC)是一种视频压缩标准,是 H.264 的继任者。HEVC 被认为不仅提升图像质量,同时也能达到 H.264 两倍的压缩率(等同于同样画面质量下比特率减少了 50%),可支持 4K 分辨率甚至到超高画质电视,最高分辨率可达到 8192×4320(8K 分辨率),这是目前发展的趋势。
(2)、MPEG 系列
MPEG 系列由国际标准组织机构(ISO)下属的运动图象专家组(MPEG)开发。
- MPEG-1 第二部分,主要使用在 VCD 上,有些在线视频也使用这种格式。该编解码器的质量大致上和原有的 VHS 录像带相当。
- MPEG-2 第二部分,等同于 H.262,使用在 DVD、SVCD 和大多数数字视频广播系统和有线分布系统中。
- MPEG-4 第二部分,可以使用在网络传输、广播和媒体存储上。比起 MPEG-2 第二部分和第一版的 H.263,它的压缩性能有所提高。
- MPEG-4 第十部分,等同于 H.264,是这两个编码组织合作诞生的标准。
2、音频编码方式
音频编码的作用:
将音频采样数据(PCM 等)压缩成音频码流,从而降低音频的数据量。
常用的音频编码方式有以下几种:
名称 | 推出机构 | 推出时间 | 目前使用领域 |
---|---|---|---|
AAC | MPEG | 1997 | 各个领域(新) |
MP3 | MPEG | 1993 | 各个领域(旧) |
WMV | Microsoft Inc. | 1999 | 微软平台 |
AC-3 | Dolby Inc. | 1992 | 电影 |
(1)MP3
MP3,英文全称 MPEG-1 or MPEG-2 Audio Layer III,是曾经非常流行的一种数字音频编码和有损压缩格式,它被设计来大幅降低音频数据量。它是在 1991 年,由位于德国埃尔朗根的研究组织 Fraunhofer-Gesellschaft 的一组工程师发明和标准化的。MP3 的普及,曾对音乐产业造成极大的冲击与影响。
(2)AAC
AAC,英文全称 Advanced Audio Coding,是由 Fraunhofer IIS、杜比实验室、AT&T、Sony 等公司共同开发,在 1997 年推出的基于 MPEG-2 的音频编码技术。2000 年,MPEG-4 标准出现后,AAC 重新集成了其特性,加入了 SBR 技术和 PS 技术,为了区别于传统的 MPEG-2 AAC 又称为 MPEG-4 AAC。
AAC 比 MP3 有更高的压缩比,同样大小的音频文件,AAC 的音质更高。
(3)WMA
WMA,英文全称 Windows Media Audio,由微软公司开发的一种数字音频压缩格式,本身包括有损和无损压缩格式。
四、 视频像素数据
1、视频像素数据简介
- 视频像素数据作用:
保存了屏幕上每个像素点的像素值。- 格式:
常见的像素格式有 RGB24,RGB32,YUV420P,YUV422P,YUV444P 等。压缩编码中一般使用的是 YUV 格式的像素数据,最常见的格式为 YUV420P。- 特点:视频像素数据体积很大,一个 1 小时电影的RGB24格式的数据体积为:
3600 * 25 * 1920 * 1080 * 3 = 559.872GByte
(PS:这里嘉定频率为 25Hz,取样精度 8bit)
2、颜色模型
(1)RGB 颜色编码
我们开发场景中使用最多的应该是 RGB 模型,R、G、B 分别代表了红、绿、蓝,这三种颜色称为三原色,将它们以不同的比例相加,可以产生任何颜色。
RGB 图像中,每个像素点都有红、绿、蓝三个原色,其中每种原色都占用 8 bit,也就是一个字节,那么一个像素点也就占用 24 bit,也就是三个字节。
那么一张 1280 * 720 大小的图片,就占用 1280 * 720 * 3 / 1024 / 1024 = 2.63 MB 存储空间。有没有更高效的颜色模型能够用更少的 bit 来表示颜色呢?那就是 YUV 颜色编码。
(2)YUV (YCbCr)颜色编码
相关实验表明,人眼对亮度敏感而对色度不敏感。因而可以将亮度信息和色度信息分离,并对色度信息采用更“狠”一点的压缩方案,从而提高压缩效率。
YUV 颜色编码采用的是 明亮度 Y 和 色度 UV 来指定像素的颜色。
“Y”表示明亮度(Luminance 或 Luma),也就是灰阶值。
“U” 和 “V” 表示的则是色度(Chrominance 或Chroma),作用是描述影像色调和饱和度。
和 RGB 表示图像类似,每个像素点都包含 Y、U、V 分量。但是它的 Y 和 UV 分量是可分离的,没有 UV 分量一样可以显示完整的图像,但是是黑白的。
- YCbCr 颜色空间是 YUV 的国际标准化变种,在数字电视和图像压缩(比如JPEG)方面都有应用。
YCbCr 其实是 YUV 经过缩放和偏移的翻版。其中 Y 与 YUV 中的 Y 含义一致, Cb,Cr 同样都指色彩, 只是在表示方法上不同而已。在 YUV 家族中, YCbCr 是在计算机系统中应用最多的成员,其应用领域很广泛,JPEG、MPEG 均采用此格式。一般人们所讲的 YUV 大多是指YCbCr。
Cb:反映的是 RGB 输入信号蓝色部分与 RGB 信号亮度值之间的差异。
Cr:反映了 RGB 输入信号红色部分与 RGB 信号亮度值之间的差异。
- RGB 转换为 Ycbcr 公式
Y = 0.257*R+0.564*G+0.098*B+16 Cb = -0.148*R-0.291*G+0.439*B+128 Cr = 0.439*R-0.368*G-0.071*B+128
- Ycbcr 转换为 RGB 公式
R = 1.164*(Y-16)+1.596*(Cr-128) G = 1.164*(Y-16)-0.392*(Cb-128)-0.813*(Cr-128) B = 1.164*(Y-16)+2.017*(Cb-128)
(3)YUV 采样格式
为节省带宽,大多数 YUV 格式平均使用的每像素位数都少于24位。主要的抽样(subsample)格式有 YCbCr4:2:0、YCbCr4:2:2、YCbCr4:1:1 和 YCbCr4:4:4。
4:2:0
4:2:0 是目前用的毕竟广泛的一种采样格式。4:2:0 表示 2:1 的水平取样,垂直 2:1 采样。比 RGB 小了二分之一。我们以4:2:0 为例详细看一下这种采样格式。
从上图中可以看 YUV4:2:0 先存储个整张图像的 Y 信息,然后存储 U 信息,最后存储 V 信息。但存储的比例是不同的,可以看出是每存储两行 Y,才会存储半行 U 和半行 V。
4:4:4
4:4:4 表示完全取样。和 RGB 大小一样。
4:2:2 表示 2:1 的水平取样,垂直完全采样。比 RGB 小了三分之一。
以上的总结参考了并部分摘抄了以下文章,非常感谢以下作者的分享!:
1、雷霄骅的视频课《基于FFmpeg+SDL的视频播放器的制作-第1节-大纲和视音频基础知识》(PS:致敬音视频大神雷神雷晓华先生,谢谢你生前为我们留下来的无私分享成果)
2、音视频直播技术专家的《H264基本原理》
3、TIM邓肯的《RGB与YCbCr》
4、取次花丛懒回顾的《【H.264/AVC视频编解码技术详解】二十三、帧间预测编码(1):帧间预测编码的基本原理》
转载请备注原文出处,不得用于商业传播——凡几多