音视频相关基础知识

96
zhang_pan
0.1 2017.12.05 20:06 字数 1732

前言

音视频相关的基础知识网上层出不穷,我们要善于站在巨人的肩膀上去学习,本篇博客将基于雷老师(雷霄骅)的博客以及讲课ppt,如果没有雷老师的无私奉献,就没有我们宝贵的学习资料,愿老师在天堂能够一路走好,也希望我们能够注重劳逸结合,多休息!这里奉上老师的博客地址:
[总结]FFMPEG视音频编解码零基础学习方法

好了,不要那么严肃了,回过来,我们学习还是要继续的,下面进入正文:

视频播放器原理

我们可能不知道,录像、录音,实质上是一个压缩采集到的图像或者音频数据的过程,这个过程又称为编码。那为什么需要编码(压缩)呢?因为设备采集到的音视频数据太大了,如果不进行压缩,占用的空间太大,不利于传输等。
而播放视频或者音频文件,实质上是一个解压缩的过程,这个过程又称为解码。那为什么又要解码(解压缩)呢?因为播放器播放需要的是音频采样数据、视频像素数据,通俗一点来说就是需要的是编码之前的数据,所以需要解码来获取。

播放一个视频文件的流程如下:

1.png

首先拿到的是一个封装格式数据,一般封装格式为FLV、MKV、MP4等,也就是我们平常拿到的一个音视频文件的后缀,这样说,大家应该了解了吧,原来这就是封装格式啊。通过解封装格式数据得到音频压缩数据和视频压缩数据,再分别对其进行处理,音频压缩数据进行音频解码得到音频采样数据,视频压缩数据进行视频解码得到视频像素数据,然后通过音视频同步技术,分别进行音频视频的播放。

封装格式

封装格式常见的有:AVI、MP4、TS、FLV、MKV、RMVB

1. 封装格式的作用

封装格式的作用就是将视频码流和音频码流按照一定的格式存储在一个文件中。也就是说封装格式相当于一个容器,将视频码流和音频码流放在里面。

2.png

2. 封装格式分析工具

Elecard Format Analyzer

3.png
  1. MPEG2-TS格式简介
    不包含文件头,数据大小固定(188Byte)的TS Packet构成。
4.png
  1. FLV格式简介
    包含文件头,数据由大小不固定的Tag构成。
5.png
6.png

视频编码数据

视频编码后的常见数据格式有:HEVC(H.265)、H264、MPEG4、MPEG2、VP9、VP8、VC-1

1. 视频编码的作用

将视频像素数据(RGB、YUV等)压缩成为视频码流,从而降低视频的数据量。

2. 视频编码的分析工具

Elecard Stream Eye

7.png
H.264格式简介
  • 数据由不固定的NALU构成
  • 最常见的情况下,1个NALU存储了1帧画面的压缩编码后的数据。
8.png
H.264压缩方法
  • 比较复杂。包含了帧内预测、帧间预测、熵编码、环路滤波等环节构成。
  • 可以将图像数据压缩100倍以上。
9.png

音频编码数据

音频编码后的常见数据格式有:AAC、AC-3、MP3、WMA

1. 音频编码的作用

将音频采样数据(PCM等)压缩成为音频码流,从而降低音频的数据量。

2. 音频编码分析工具

暂不涉及。

10.png
AAC格式简介

数据由大小不固定的ADTS构成。

11.png
AAC压缩方法

比较复杂,暂不对其中的算法做过多介绍。
可以将音频数据压缩10倍以上。

视频像素数据

常见的视频像素数据格式有:RGB24、RGB32、YUV420P、YUV422P、YUV444P等。压缩编码中一般使用的是YUV格式的像素数据,最为常见的是YUV420P。

特点

视频像素数据体积很大,一般情况下1小时高清视频的RGB24格式的数据体积为:
3600 * 25 * 1920 * 1080 * 3 = 559.9GByte
PS:这里假定帧率为25HZ,取样精度8bit。

YUV格式像素数据查看工具

YUV Player

RGB格式简介

R代表Red,G代表Green,B代表Blue,这三种颜色可以混合成世界上所有的颜色。彩色图像中的每个点,由R、G、B三个分量组成。

12.png

以RGB24为例,图像像素数据的存储方式如下:

13.png

从图中可以看出,RGB24依次存储了每个像素点的R、G、B信息。
PS:BMP文件存储的就是RGB格式的像素数据。

YUV格式简介

相关实验表明,人眼对亮度敏感,而对色度不敏感。因而可以将亮度信息和色度信息分离,并对色度信息采用更“狠”一点的压缩方案,从而提高压缩效率。
YUV格式中,Y只包含亮度信息,而UV只包含色度信息。以YUV420P为例,图像像素数据的存储方式如图所示:

14.png

从图中可以看出,YUV420P首先存储了整张图像的Y信息,然后存储整张图像的U信息,最后存储整张图像的V信息。

15.png

音频采样数据

常见的音频采样数据格式为:PCM

特点

音频采样数据体积很大,一般情况下一首4分钟的PCM格式的歌曲体积为:
4 * 60 * 44100 * 2 * 2 = 42.3MByte
PS:这里假定采样率为44100,采样精度为16bit。

音频采样数据查看工具

Adobe Audition

PCM格式简介

  • 单声道的情况下按照顺序存储每个采样点的数据。
  • 双声道的情况下按照“左右、左右”的顺序存储每个采样点两个声道的数据。
16.png
17.png

展望

关于音视频相关的知识,实在是太多太多,所以我们不断地学习,不断地积累,在工作中增加知识,利用知识去服务于工作。

喜欢本篇博客的简友们,就请来一波点赞,您的每一次关注,将成为我前进的动力,谢谢!

NDK开发