概念
咱们先聊一下关于视频的一些基础概念。
-
文件格式
一般情况下我们看到的文件后缀就代表着文件格式。一般有可能接触到的mp4,flv,mov、wav,m3u8,hls,avi,mkv,rvmb等等。文件格式只是表示一个视频文件内容的封装方式,举个例子mp4文件所有的数据都装在box里面:有且只有1个“ftyp”类型的box,之后就是“moov”类型的box,包含媒体的metadata信息,媒体数据包含在“mdat”类型的box。 -
编码方式
表示每一帧视频帧使用何种方式进行编码/解码。常见的编码方式h264、h265/hevc、av1、vp9等等。大概比较一下如下表:
编码格式 | 优缺点 | 主要应用 |
---|---|---|
h264 | 效率高、压缩率高、画质好、 兼容性好、支持硬件、 网络适应性强、要授权费 | 视频会议、实时直播、 视频存储 |
h265/hevc | 效率中、压缩率高、画质好、 兼容性一般、节省带宽、 网络适应性强、要授权费 | 视频点播、蓝光视频、 安防监控 |
vp9 | 效率低、Chrome支持、 低端android支持、兼容性一般、 免费 | 视频点播、VR视频 |
av1 | 效率低、压缩率高、 兼容性一般、免费 | 视频点播、8K视频 |
-
像素格式
像素格式描述了视频帧每个点的数据存储方式和内存表示方式。常见的有RGB、YUV,细分一点RBG565、RGB444、YUV422、YUV420等等。拿RGB444举例,其中RGB表示每个像素有R、G、B三个通道,每个通道用4bits表示其中数值,也就是用12bits表示1个像素。 -
分辨率
分辨率用水平方向和垂直方向像素点个数表示:水平像素(w)x垂直像数(h),一般可以理解为视频清晰度。我们看看一般情况下的定义:
清晰度 | 参考值 | 应用范围 |
---|---|---|
480p(标) | 640x480 | 手机 |
720p(高) | 1280x720 | 手机 |
1080p | 1920×1080 | 电脑 |
4k | 4096×2160 | 电视 |
8k | 7680×4320 | 影院 |
-
视频帧率
表示视频每秒钟有多少张视频画面序列,也叫fps。一般情况下游戏内容需要30fps以上,游戏过程fps低会引起眩晕,看电影需要24fps算流畅,低于12fps可以认为是卡顿,12~24fps之间需要采样合适的技术方案优化来保障播放流畅度。 -
视频码率
视频码率是数据传输时单位时间传送的数据位数,一般我们用的单位是kbps,即千位每秒。也就是单位时间内视频内容需要使用多大的数据来表示,可以理解为对原始视频的采样率。码率越大,采样率越高,采样精度越高,内容失真越小,越接近原始视频画面内容。同样带来的影响就是视频文件越大,几乎所有的的视频编码都重点关注如何用最低码率达到最小失真。在视频编码的时候会有2个选择固定码率编码或者可变码率编码。
总结
在实际视频压缩优化的时候,我们需要兼顾上面的选项,以求获取到视频尺寸和视频质量之间的一个平衡。既能保障视频尺寸在适当范围,匹配用户网络,兼容用户设备,又能满足视频播放流畅度,清晰度的良好用户体验。