音视频相关基础知识与FFmpeg介绍

音视频基础知识

视频播放原理

下图是一个最简单的视频播放的过程(不包括视频加密等等过程):
音视频相关基础知识与FFmpeg介绍_第1张图片

这是一个视频播放的最基本的原理流程图,从这个图可以很整体的看到视频处理的一些主要步骤。

注意:我们利用FFmpeg进行编程的时候几乎就是基于这个流程图来进行的。比如说,编程的时候我们会按到编码器,解码读取数据,绘制到屏幕上的时候可能还需要把YUV数据转换为RGB等。

我们常见的封装视频的格式有:flv(音视频分开),mp4,avi等等。

为什么视频需要经过封装处理呢?

因为摄像头采集到的画面,以及麦克风采集到的音频数据是经过压缩的处理,不然视频文件就会很大。
也就是说:

  1. 录像,录音,是指上一个压缩采集的图像或者声音的过程。这个过程就是视频编码压缩的过程。
  2. 播放视频,音频文件实质上就是解压缩的过程,这个过程又称为解码。
视频的封装格式介绍

封装格式的作用是:视频码率和音频码率按照一定的格式存储在一个文件中/

封装格式分析工具:Elecard Format Analyzer

常见的视频封装格式:
音视频相关基础知识与FFmpeg介绍_第2张图片
以两个格子为例子,介绍一下原理:

音视频相关基础知识与FFmpeg介绍_第3张图片

  1. MEPG2-TS格式是由一个一个数据大小固定的TS-Packet组成,因此可以支持快进。
  2. FLY格式由FLV HEADER以及一个一个大小不固定的TAG组成。因为FLV格式直接能够用flash播放,因此常用于视频直播领域。我们在做RTMP推流的时候,一开始就需要发送头信息。因为数据单元大小不固定,因此原生的视频播放器不支持FLV视频的快进(有些播放器进行了处理可以快进)。

视频编码常见格式:

视频编解码格式:
  1. 常见的视频编码格式有:H.264、MPEG2、VP8等
  2. 视频解码得到的像素数据YUV、RGB。YUV格式中,Y代表亮度,UV代表色度,人眼对亮度比较敏感,两者比例为4:1。

音视频相关基础知识与FFmpeg介绍_第4张图片

原理分析:
音视频相关基础知识与FFmpeg介绍_第5张图片
以H.264为例,H.264是由大小不固定的NALU构成。(NALU实质是一种数据结构)。
H.264里面有很多子压缩算法,原理比较复杂,包括了熵解码,环路滤波,帧内检测,帧间检测等知识。H.264编码原理比较复杂,因此H.264的压缩效率是几百到几千倍。

视频解码(摄像机获取)得到的是视频像素数据,保存了屏幕上每个像素点的像素值。
常见的像素数据格式有RGB24、RGB32,YUV420P、YUV422P。YUV444P等。压缩编码中一般使用的是YUV格式的像素数据,最为常见的格式未YUV420P。

音视频相关基础知识与FFmpeg介绍_第6张图片
RGB也有很多种,比如RGB24,不同的RGB编码色彩丰富度不同。

音视频相关基础知识与FFmpeg介绍_第7张图片

音频编解码格式:
  1. 常见的音频格式有:AAC、MP3。
  2. 音频编码得到的是音频采样数据,然后喇叭才能播放。常见格式是PCM,实质上一个一个采样值。都拿我时间内震动的数据,包括振幅和频率。常用采样率44100,人耳能够察觉的最高采样率。

音视频相关基础知识与FFmpeg介绍_第8张图片
在做视频直播的时候:音频常用AAC进行编码,用FAAC库进行处理;视频用H.264编码。

音视频相关基础知识与FFmpeg介绍_第9张图片
音频采样数据PCM:保存了音频中每个采样点的值,音频采样数据体积很大,一般需要进行压缩,我们常说的“无损”实质上是没有损失的压缩。

音视频相关基础知识与FFmpeg介绍_第10张图片
相关播放(编辑)工具

  1. YUV:YUV Player
  2. PCM:Adobe Audition
  3. 查看视频信息:MediaInfo
  4. 视频编码数据:Elecard Format Analyzer
  5. 视频编码分析工具:Elecard Stream Eye

FFmpeg介绍

FFmpeg的八个函数库:

音视频相关基础知识与FFmpeg介绍_第11张图片
文章来源:
https://www.jianshu.com/p/5b7c18285667

你可能感兴趣的:(音视频)