音视频编解码简介
一、为什么音视频要编解码?
- 一张图片2M是很正常的大小,1秒视频里有24帧,一分钟就是2G大小,传输上基本是不可能的,所以要压缩/解压缩,这就是编/解码
二、解码的方法
1、空间
- 一般图片的一个像素点就3个颜色+1个透明度,一个像素点4bit。
- 但是图片上有很多点是同样的颜色和透明度,所以可以做个映射表。映射表的key可以是坐标也可以是范围,例如:动画片颜色单一,压缩比非常大
2、时间
- 两帧,也就是两张图片,其实大部分是一样的,所以我们可以存差异,所以帧有很多类型
(1)基准帧,存的是完全的图片
(2)存点差异的帧,就是哪点像素点的差异
(3)有位移差异的帧,就是存矢量
还有很多类型的帧 - 直播和点对点 的编码策略是不一样的
三、编解码的效率
- 由于是对像素的操作,所以计算量比较大,手机里有个芯片是专门编解码视频的(贵的手机才有,便宜手机可能没这个芯片),如果没这个芯片的话,就要靠CPU了,所以便宜手机看视频会发热
- 用这个芯片编解码叫硬编解码,用cpu叫软编解码,编解码大多数都是发生在客户端
- 服务端要干的事,就是预先收集手机的分辨率,这样就在服务端生成多个分辨率的视频,进一步减少网络传输。当然还有其他的,终极目的就是减少网络传输。提高用户体验。
四、音编解码
- 傅里叶变换
- 声音压缩算法,人耳对高频和低频不敏感,杂音过滤,等等
五、音视频同步
- 由于人类对声音敏感,所以一般把声音的线当成主时间线,让视频随着声音走,如果视频不同步,就适当放慢/加快视频