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

音视频基础知识
视频播放原理

下图是一个最简单的视频播放的过程(不包括视频加密等等过程):
在这里插入图片描述

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

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

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

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

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

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

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

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

常见的视频封装格式:
在这里插入图片描述
以两个格子为例子,介绍一下原理:

在这里插入图片描述

  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。

在这里插入图片描述

原理分析:
在这里插入图片描述
以H.264为例,H.264是由大小不固定的NALU构成。(NALU实质是一种数据结构)。
H.264里面有很多子压缩算法,原理比较复杂,包括了熵解码,环路滤波,帧内检测,帧间检测等知识。H.264编码原理比较复杂,因此H.264的压缩效率是几百到几千倍。

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

在这里插入图片描述
RGB也有很多种,比如RGB24,不同的RGB编码色彩丰富度不同。

在这里插入图片描述

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

在这里插入图片描述
在做视频直播的时候:音频常用AAC进行编码,用FAAC库进行处理;视频用H.264编码。

在这里插入图片描述
音频采样数据PCM:保存了音频中每个采样点的值,音频采样数据体积很大,一般需要进行压缩,我们常说的“无损”实质上是没有损失的压缩。

在这里插入图片描述
相关播放(编辑)工具

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

FFmpeg的八个函数库:

在这里插入图片描述
文章来源:
https://www.jianshu.com/p/5b7c18285667

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值