574 字
3 分钟
视频格式和压缩技术
现在视频文件最常见的格式是 mp4,但是在看 Android 播放器支持的视频格式时发现没有直接说支持 mp4,而是这样的,于是简单的了解了一下
mp4 是一种文件类型,是一种视频,音频,字幕等的组织形式,可以理解为一个容器,类似的文件格式还有 mkv,avi 等
而图片中圈起来的部分是视频的压缩格式,比如 H.263/H.264/H.265 等都是,据说早期还收取专利费
H.263 出来的最早,对应的 mime 是 video/3gpp
H.264 是 2004 年发布的规范,全称是 Advanced Video Encoding,也叫 MPEG-4 AVC,相对于 263 压缩率提升 40-50%,最高支持 4K 视频,mime 是:video/avc,是目前最常用的视频编码格式
H.265 是 2013 年发布的规范,全称是 High Efficiency Video Encoding,为了支持更高清的视频和更高的压缩率, mime 是:video/hevc
然后视频在播放时要将压缩的视频还原成每一帧的画面,更高的编码意味着解码时需要更多的计算,如果使用软解码就需要程序通过 CPU 通过复杂的计算进行还原,俗称软解码
硬解码是指通过 GPU 中设计的特殊电路直接能将某种压缩的视频还原成画面,不需要通过 CPU 的计算
简单的看了一下视频压缩原理,视频压缩主要有两个纬度
- 第一种在单个帧内处理,降低每一帧画面所占空间,比如裁剪画面尺寸和压缩画面质量,原理和 jpeg 图片压缩一样
- 第二种是通过时间线的方向处理多帧数据,比如当前帧和下一帧大部分画面都一样,那么就可以把这一帧作为关键帧,再记录下一帧和这一帧的差异信息,然后在播放时就可以通过当前帧和差异信息还原下一帧的画面
实际情况比这个复杂的多,比如会把一帧的画面按照一定的单元拆分成多个小格子来对比差异
还有什么运动估计和补偿
CABCA 给高频数据短码,低频数据长码