音视频基础

2017-08-14  本文已影响83人  不忘初心1990

音视频原始文件

  1. 采集的音频原始文件为PCM格式。
  2. 采集的视频原始文件为YUV/RGB格式。

由于采集的原始的音视频文件数据量超大,不易于传输和存储,所以必须要对音视频文件进行编码压缩。

音视频编码

视频编码的主要作用是将视频像素数据(RGB,YUV等)压缩成为视频码流,从而降低视频的数据量。如果视频不经过压缩编码的话,体积通常是非常大的,一部电影可能就要上百G的空间。视频编码是视音频技术中最重要的技术之一。视频码流的数据量占了视音频总数据量的绝大部分。高效率的视频编码在同等的码率下,可以获得更高的视频质量。

A. 软编软解与硬编解码的概念

1. 软编软解: 利用CPU做视频的编码和解码; 占用CPU资源,编解码效率不高;
2. 硬编解码: 利用GPU或者专用处理器来对视频流进行编解码,也就是硬件编码和解码.在iOS 8.0后,
苹果将该Video/Audio ToolBox(之前在Mac系统中使用)框架引入iOS系统。

在此之前我们通常使用的FFmpeg多媒体库,利用CPU来进行视频的编解码,占用CPU资源,效率低下,俗称软编解码.而苹果在2014年的iOS8中,开放了VideoToolbox.framwork框架,此框架使用GPU或专用的处理器来进行编解码,俗称硬编解码.而此框架在此之前只有MAC OS系统中可以使用,在iOS作为私有框架.终于苹果在iOS8.0中得到开放引入.

B. 编码格式

视频封装格式

封装格式的主要作用是把编码压缩后的视频码流和音频码流按照一定的格式存储在一个文件中。现如今流行的封装格式如下表所示:

封装格式和编码格式的区别:

编码(codec),比如视频编码h264,h265,音频编码aac,mp3,它存在的目的主要是压缩原始数据的体积。封装格式(container),比如mp4,mkv,用来存储/传输编码数据,并按一定规则把音视频、字幕等数据组织起来,里面都会有一些信息,比如当前流中包含哪些编码类型,时间戳等,播放器可以按照这些信息来匹配解码器、同步音视频。

视频播放流程

视频播放器播放一个互联网上的视频文件,需要经过以下几个步骤:解协议,解封装,解码视音频,视音频同步。如果播放本地文件则不需要解协议,为以下几个步骤:解封装,解码视音频,视音频同步。他们的过程如图所示。

流媒体协议是服务器与客户端之间通信遵循的规定。当前网络上主要的流媒体协议如表所示。

VideoToolbox的基本数据

Video Toolbox视频编解码前后需要应用的数据结构进行说明。

音视频质量

开始中我们要了解几种影响音视频的质量的关键概念:

音频编码率(KBit为单位)/8 +视频编码率(KBit为单位)/8 *影片总长度(秒为单位)
=文件大小(MB为单位)

由此从上述概念可知:

码流、采样率、帧率值越大,视频和音频的质量和清晰度越大.分辨率影响图像大小,所以分辨率越高,图像越大,分辨率越低,图像越小。

因此,码率一定的情况下,分辨率越高,图像越不清晰.

但事实情况下,硬件设备也会影响,我们不能无限制的让这些参数变大,同时,码率一定的情况下,分辨率在一定的范围内取值图像都是清晰的;同样分辨率一定,码率在一定的范围内取值也都是清晰。

上一篇 下一篇

猜你喜欢

热点阅读