前言
随着直播和短视频行业日益火热的发展形势下,音视频开发等技术也随之成为开发者们关注的重点,并且随着5G网络的普及,音视频开发会慢慢的成为开发人员必不可少的一个技能。
视频的相关概念
比如我们常见的图片格式有
.png,.jpg,常见的文档格式有.doc,而视频的格式就有.mov、.avi、.mpg、.vob、.mkv、.rm、.rmvb等等。
下面我们来看一下一个.mov格式的视频文件,编解码器这一项有AAC和H264,这两个就是视频的音频编码和视频编码,.mov就是视频的封装格式
视频封装格式
视频封装格式,相当于一种储存视频信息的容器,把音频和视频打包都一起的封装,所以播放前是需要把这部分内容解开,提取出对应音频编码和视频编码。
下面这张图来说明常见的视频封装格式:
-
AVI 格式,对应的文件格式为 .avi,英文全称 Audio Video Interleaved,是由 Microsoft 公司于 1992 年推出。这种视频格式的优点是图像质量好,无损 AVI 可以保存 alpha 通道。缺点是体积过于庞大,并且压缩标准不统一,存在较多的高低版本兼容问题。
-
DV-AVI 格式,对应的文件格式为
.avi,英文全称Digital Video Format,是由索尼、松下、JVC 等多家厂商联合提出的一种家用数字视频格式。常见的数码摄像机就是使用这种格式记录视频数据的。它可以通过电脑的 IEEE 1394 端口传输视频数据到电脑,也可以将电脑中编辑好的的视频数据回录到数码摄像机中。 -
WMV 格式,对应的文件格式是
.wmv、.asf,英文全称 Windows Media Video,是微软推出的一种采用独立编码方式并且可以直接在网上实时观看视频节目的文件压缩格式。在同等视频质量下,WMV 格式的文件可以边下载边播放,因此很适合在网上播放和传输。 -
MPEG 格式,对应的文件格式有
.mpg、.mpeg、.mpe、.dat、.vob、.asf、.3gp、.mp4等等,英文全称 Moving Picture Experts Group,是由运动图像专家组制定的视频格式,该专家组于 1988 年组建,专门负责视频和音频标准制定,其成员都是视频、音频以及系统领域的技术专家。MPEG 格式目前有三个压缩标准,分别是MPEG-1、MPEG-2、和MPEG-4。MPEG-4是现在用的比较多的视频封装格式,它为了播放流式媒体的高质量视频而专门设计的,以求使用最少的数据获得最佳的图像质量。 -
Matroska 格式,对应的文件格式是
.mkv,Matroska 是一种新的视频封装格式,它可将多种不同编码的视频及 16 条以上不同格式的音频和不同语言的字幕流封装到一个 Matroska Media 文件当中。 -
Real Video 格式,对应的文件格式是
.rm、.rmvb,是 Real Networks 公司所制定的音频视频压缩规范称为 Real Media。用户可以使用 RealPlayer 根据不同的网络传输速率制定出不同的压缩比率,从而实现在低速率的网络上进行影像数据实时传送和播放。 -
QuickTime File Format 格式,对应的文件格式是
.mov,是 Apple 公司开发的一种视频格式,默认的播放器是苹果的 QuickTime。这种封装格式具有较高的压缩比率和较完美的视频清晰度等特点,并可以保存 alpha 通道。 -
Flash Video 格式,对应的文件格式是
.flv,是由 Adobe Flash 延伸出来的一种网络视频封装格式。这种格式被很多视频网站所采用。
音频编码
音频编码指的是音频数据的编码方式,常见的有:
MP3、PCM、WAV、AAC、AC-3等。音频的原始数据大小一般不适合直接传入,因为体积太大了,所以一般都会音频传输会采用各种编码格式进行压缩和去冗余。
- AAC,英文全称 Advanced Audio Coding,是由 Fraunhofer IIS、杜比实验室、AT&T、Sony等公司共同开发,在 1997 年推出的基于 MPEG-2 的音频编码技术。2000 年,MPEG-4 标准出现后,AAC 重新集成了其特性,加入了 SBR 技术和 PS 技术,为了区别于传统的 MPEG-2 AAC 又称为 MPEG-4 AAC。
- MP3,英文全称 MPEG-1 or MPEG-2 Audio Layer III,是当曾经非常流行的一种数字音频编码和有损压缩格式,它被设计来大幅降低音频数据量。它是在 1991 年,由位于德国埃尔朗根的研究组织 Fraunhofer-Gesellschaft 的一组工程师发明和标准化的。MP3 的普及,曾对音乐产业造成极大的冲击与影响。
- WMA,英文全称 Windows Media Audio,由微软公司开发的一种数字音频压缩格式,本身包括有损和无损压缩格式。
视频编码
视频编解码的过程是指对数字视频进行压缩或解压缩的一个过程,常见视频编码方式有
MPEG系列和H.26X系列, 其中H.264是目前比较常见的编码方式。
- 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 分辨率),这是目前发展的趋势。
- MPEG 系列,由国际标准组织机构(ISO)下属的运动图象专家组(MPEG)开发。
- MPEG-1 第二部分,主要使用在
VCD上,有些在线视频也使用这种格式。该编解码器的质量大致上和原有的VHS录像带相当。 - MPEG-2 第二部分,等同于
H.262,使用在DVD、SVCD和大多数数字视频广播系统和有线分布系统中。 - MPEG-4 第二部分,可以使用在网络传输、广播和媒体存储上。比起
MPEG-2第二部分和第一版的H.263,它的压缩性能有所提高。 - MPEG-4 第十部分,等同于
H.264,是这两个编码组织合作诞生的标准。
- MPEG-1 第二部分,主要使用在
颜色模型
在一般的开发中,我们接触到的颜色模型都是RGB,而音视频开发中所用的颜色模型是YUV。
RGB
RGB 模型是目前常用的一种彩色信息表达方式,它使用红、绿、蓝三原色的亮度来定量表示颜色。该模型也称为加色混色模型,是以RGB三色光互相叠加来实现混色的方法,因而适合于显示器等发光体的显示。
RGB颜色模型:
在 RGB 模型中每种颜色需要 3 个数字,分别表示 R、G、B,比如 (255, 0, 0) 表示红色,通常一个数字占用 1 字节,那么表示一种颜色需要 24 bits
YUV
YUV是一种颜色编码方式,主要用于电视系统以及模拟视频领域,它将亮度信息(Y)与色彩信息(UV)分离,没有UV信息一样可以显示完整的图像,只不过是黑白的,这样的设计很好地解决了彩色电视机与黑白电视兼容的问题。
- 在过去,YUV 和 Y'UV被用作电视系统中颜色信息的特定模拟信息编码。而YCbCr被用作颜色信息的数字编码,通常适用于视频和静态图像的压缩和传输(MPEG, JPEG)。
- 今天,YUV通常用被用在计算机行业描述使用YCbCr编码的文件格式。
Y表示亮度,CbCr表示颜色。怎么表示颜色,可以看下面这幅坐标图:
YUV 采集方式
- 假设图片有如下像素组成
- YCbCr 4:4:4:一副图片就是一个像素阵列.每个像素的 3 个分量的信息是完整的
- YCbCr4:2:2:下图中,对于每个像素点都保留「亮度」值,但是省略每行中偶素位像素点的「色度」值,从而节省了 bit
- YCbCr4:2:0:做了更多的省略,但是对图片质量的影响却不会太大
RGB与YUV的装换公式
// RGB -> YUV
Y = 0.299R + 0.587G + 0.114B
Cb = 0.564(B - Y)
Cr = 0.713(R - Y)
// YUV -> RGB
R = Y + 1.402Cr
G = Y - 0.344Cb - 0.714Cr
B = Y + 1.772Cb