音视频学习(一)-- 基础知识准备

2019-07-17  本文已影响0人  凡几多

本章知识点一览:

  • 视频播放原理
  • 视频文件封装格式
  • 音视频编码方式简介

一、视频播放器原理:

我们播放的视频文件一般都是用一种封装格式封装起来的,封装格式的作用是什么呢?一般视频文件里不光有视频,还有音频,封装格式的作用就是把视频和音频打包起来。
所以我们先要解封装格式,看有哪些视频流和哪些音频流,此时的音频流和视频流都还是压缩数据,不能直接用于显示的,这就需要解码。下面是播放一个视频文件时的流程图。

视频播放流程图.png

根据上面流程图中的流程,我们从上至下一步步的来了解下每步骤的原理和实现方式。先来看下 视频封装格式

二、视频文件封装格式

封装格式(也叫容器),就是将已经编码压缩好的视频轨和音频轨按照一定的格式放到一个文件中,也就是说仅仅是一个外壳,或者大家把它当成一个放视频轨和音频轨的文件夹也可以。说得通俗点,视频轨相当于饭,而音频轨相当于菜,封装格式就是一个碗,或者一个锅,用来盛放饭菜的容器。
下面是几种常用的 视频文件后缀类型 与其相对应的 封装格式

视频文件格式 视频封装格式
.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、视频编码方式

名称 推出机构 推出时间 目前使用领域
HEVC(H.265) MPEG/ITU-T 2013 研发中
H.264 MPEG/ITU-T 2003 各个领域
MPEG4 MPEG 2001 不温不火
MPEG2 MPEG 1994 数字电视
VP9 Google 2013 研发中
VP8 Google 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×43208K 分辨率),这是目前发展的趋势。

(2)、MPEG 系列

MPEG 系列由国际标准组织机构(ISO)下属的运动图象专家组(MPEG)开发。

  • MPEG-1 第二部分,主要使用在 VCD 上,有些在线视频也使用这种格式。该编解码器的质量大致上和原有的 VHS 录像带相当。
  • MPEG-2 第二部分,等同于 H.262,使用在 DVDSVCD 和大多数数字视频广播系统和有线分布系统中。
  • 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&TSony 等公司共同开发,在 1997 年推出的基于 MPEG-2 的音频编码技术。2000 年,MPEG-4 标准出现后,AAC 重新集成了其特性,加入了 SBR 技术和 PS 技术,为了区别于传统的 MPEG-2 AAC 又称为 MPEG-4 AAC
AACMP3 有更高的压缩比,同样大小的音频文件,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 颜色编码
4624551-cd5ce515e4596c75.png

我们开发场景中使用最多的应该是 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”表示明亮度(LuminanceLuma),也就是灰阶值。
“U”“V” 表示的则是色度(ChrominanceChroma),作用是描述影像色调和饱和度。

RGB 表示图像类似,每个像素点都包含 Y、U、V 分量。但是它的 YUV 分量是可分离的,没有 UV 分量一样可以显示完整的图像,但是是黑白的。

  • YCbCr 颜色空间是 YUV 的国际标准化变种,在数字电视和图像压缩(比如JPEG)方面都有应用。
    YCbCr 其实是 YUV 经过缩放和偏移的翻版。其中 YYUV 中的 Y 含义一致, CbCr 同样都指色彩, 只是在表示方法上不同而已。在 YUV 家族中, YCbCr 是在计算机系统中应用最多的成员,其应用领域很广泛,JPEGMPEG 均采用此格式。一般人们所讲的 YUV 大多是指YCbCr
    Cb:反映的是 RGB 输入信号蓝色部分与 RGB 信号亮度值之间的差异。
    Cr:反映了 RGB 输入信号红色部分与 RGB 信号亮度值之间的差异。
    YCbCr.png
  • 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:1YCbCr4:4:4

YUV像素.png
  • 4:2:0
    4:2:0 是目前用的毕竟广泛的一种采样格式。4:2:0 表示 2:1 的水平取样,垂直 2:1 采样。比 RGB 小了二分之一。我们以4:2:0 为例详细看一下这种采样格式。

    YUV420.png 从上图中可以看 YUV4:2:0 先存储个整张图像的 Y 信息,然后存储 U 信息,最后存储 V 信息。但存储的比例是不同的,可以看出是每存储两行 Y,才会存储半行 U 和半行 V
    YUV4-2-0.png
  • 4:4:4
    4:4:4 表示完全取样。和 RGB 大小一样。

    YUV4-4-4.png
  • 4:2:2 表示 2:1 的水平取样,垂直完全采样。比 RGB 小了三分之一。

    YUV4-2-2.png

以上的总结参考了并部分摘抄了以下文章,非常感谢以下作者的分享!:
1、雷霄骅的视频课《基于FFmpeg+SDL的视频播放器的制作-第1节-大纲和视音频基础知识》(PS:致敬音视频大神雷神雷晓华先生,谢谢你生前为我们留下来的无私分享成果)
2、音视频直播技术专家的《H264基本原理》
3、TIM邓肯的《RGB与YCbCr》
4、取次花丛懒回顾的《【H.264/AVC视频编解码技术详解】二十三、帧间预测编码(1):帧间预测编码的基本原理》

转载请备注原文出处,不得用于商业传播——凡几多

上一篇下一篇

猜你喜欢

热点阅读