为什么要压缩
视频有AVC,音频有AAC
这里的编码和音频种提到的数字化编码不是同一个概览,而是指压缩编码
我们知道,在计算机的世界中,一切都是0和1组成的,音频和视频数据也不例外
由于音视频的数据量庞大,如果按照裸流数据存储的话,那将需要耗费非常大的存储空间,也不利于传送。
而音视频中,其实包含了大量0和1的重复数据,因此可以通过一定的算法来压缩这些0和1的数据
特别在视频中,由于画面是逐渐过渡的,因此整个视频中,包含了大量画面/像素的重复,这正好提供了非常大的压缩空间。
因此,编码可以大大减少音视频数据的大小,让音视频更容易存储和传送。
那么,未经编码的原始音视频,数据量到底有多大?
以一个分辨率1920*1280,帧率30,像素点24bit 的视频为例,
总像素(pixels)= 1920 *1280 *24 = 49766400bit = 6.22MB
一幅图的原始大小(6.22MB),再乘以帧率30.
也就是说:每秒视频的大小是6.22 * 30 = 186.6MB,每分钟大约是11GB,一部90分钟的电影,约1T
视频编码
所谓视频编码方式就是指能够对数字视频进行压缩或者解压缩的程序或设备,通常这种压缩属于有损数据压缩,也可以指通过特定的压缩技术,将某个视频格式转换为另一种视频格式。
视频编码格式有很多,比如H26X系列和MPEG系列的编码,这些编码格式都是为了适应时代发展而出现的
H26X(1/2/3/4/5)系列由ITU(International Telecomminication Unio)国际电讯联盟主导
H261:老的视频会议和视频电话产品中(已淘汰)
H262:停产货
H263:主要用在视频会议,视频电话和网络电视上
H264:或称AVC(高级视频编码)是一种视频压缩标准,一种被广泛使用的高精度视频录制、压缩和发布格式
H265:高效率视频编码(HEVC),H264继任者。不仅提成图像质量,同时能达到H264两倍压缩率,可支持4K分辨率甚至到超高画质电视,最高分辨率可达到8192*4320(8K分辨率)。尚未由大众化编码软件出现。
MPEG(1/2/3/4)系列由MPEG(Moving Picture Experts Group,ISO旗下的组织)主导
MPEG-4 第十部分也叫AVC。
其他一些小产商指定的编码格式这里不做介绍。
音频编码
原始的PCM音频数据也是非常大的数据量,因此也需要对其进行压缩编码
和视频编码一样,音频也有许多的编码格式,如:AAC、WAV、MP3、WMA、APE、PLAC等,后两种无损压缩
AAC是新一代音频有损压缩技术,一种高压缩比的音频压缩算法
在MP4视频种的音频数据,大多数时候都是采用AAC压缩格式。
AAC格式主要分为两种:ADIF和ADTS
ADIF:音频数据交换格式
这种格式特征是可以确定的找到这个音频数据的开始,不需进行在音频数据流中间开始的解码,即它的解码必须在明确定义的开始处进行,这种格式常用在磁盘文件中
ADIF只有一个统一的头,所以必须得到所有的数据后解码
数据格式:
header|raw_data
ADTS:音频数据传输流
这种格式特征是它是一个有同步字的比特流,解码可以在这个流中任何位置开始,他的特征类似于mp3数据流格式
ADTS可以在任意桢解码,它每一帧都有头信息
目前一般编码后的都是ADTS格式的音频流
数据格式:
... sync_word|header|error_check|raw_data...
硬解码和软解码
在手机或者PC商们都会有GPU、CPU或者解码器等硬件
通常,我们的计算都是在CPU商进行的,也就是我们的软件的执行芯片,而GPU主要负责画面的显示(这是一种硬件加速)
软解码:
就是指利用CPU的计算能力来解码,通常如果CPU的能力不是很强的时候,一则解码速度会比较慢,二则手机可能出现发热现象,但是,由于使用统一的算法,兼容性会很好。
硬解码:
指的是利用专门的解码芯片来加速解码,通常硬解码的解码速度会快很多,但是由于硬解码由各个厂家实现,质量参差不齐,非常容易出现兼容新问题。
音视频容器
音视频容器指的是包裹了音视频编码数据的容器,用来把以特定编码标准的视频流和音频流混在一起,成为一个文件
例如:MP4支持H264、H265等视频编码和AAC、MP3等音频编码
mp4是目前最流行的视频格式,在移动端,一般将视频封装为mp4格式
评论区