回顾青训营「探索多媒体技术」
这是我参与「第四届青训营 」笔记创作活动的的第3天
一、视频的基本元素
我们从早期的黑白📺发展到如今的臻彩📺,是怎么制造出来的呢?
1、我们先从基础的RGB三原色开始
概念:每种颜色都可用三个变量来表示-红色绿色以及蓝色的强度。记录及显示彩色图像时,RGB是最常见的一种方案。
取值:它们的取值,R、G、B分别从0到255,一共256个等级。按照计算,256级的RGB色彩总共能组合出约1678万种色彩,即256×256x256=16777216。通常也被简称为1600万色或干万色。
体验:我们可以通过Color-Picker来体验这个过程。
有了彩的认识之后我们要做到高清细致呢,接下来出场的是我们的二号玩家分辨率
2、分辨率
概念:指的是纵横方向的像素数量,一般表示为:宽x高(or 长x高)eg: 720*1080
为什么会分辨率也会如此重要呢?
因为如今智能化的发展上,手机依靠的是电池,分辨率如何设计可以让我们更省电,效率更高,提到了手机就不得不的想到了我们手机上播放视频画质如1080P、720P,哪这些又是啥呢?有请我们的三号玩家!
3、码率 / 比特率
概念:表示单位时间内传送 bit 的数目,单位bps,表示是单位时间播放连续的媒体如压缩后的音视频的bit数量,也称为码流。
这种bps的单位电信领域上表示速度,就是我们常说的网速了。如100Mbps
思考:那么码率是否越高就越好呢?
并不是,这是取决于我们的环境
越高的比特率,需要更高的带宽来支撑,否则会带来卡顿、成本等问题 太低的比特率,可能会导致视频画面过度压缩,模糊不清
说完了这些,有些小伙伴可能还是模糊的,视频是怎么发展出来的呢?不要着急,有了以上的基础概念之后,我们请出我们的四号玩家:
4、帧 & 帧率
帧(Frame) :
理解帧就是视频或者动画中的每一张画面,而视频和动画特效就是由无数张画面组合而成,每一张画面都是一帧。
帧率 (Frame Rate):
每秒传输帧数通俗来讲就是指动画或视频的画面数、帧率。每秒钟帧数越多,所显示的动作就会越流畅。
FPS 也可以理解为我们常说的“刷新率。当刷新率太低时我们肉眼都能感觉到屏幕的闪烁、不连贯,
对图像显示效果和视觉感观产生不好的影响。
说了这么多还只是停留在图片上,那么视频啃的少不了声音🔊,那么接下来我们继续介绍
5、封装
对于任何一部视频来说,只有图像,没有声音,肯定是不行的。所以,视频编码后,加上音频编码,要一起进行封装。
简单来说,就是将已经编码压缩好的视频轨和音频轨按照一定的格式放到一个文件中。再通俗点,视频轨相当于饭,而音频轨相当于菜,封装格式就是一个饭盒,用来盛放饭菜的容器。 目前主要的视频容器有如下: MPG、VOB、MP4、3GP、ASF、RMVB、WMV、MOV、Divx、MKV、FLV、TS/PS等。 封装之后的视频,就可以传输了,
思考:视频的内部是如何组装起来的呢?是一段视频一段音频还是先视频后音频呢?
这时候就提到一个概念(轨道/流),我们可以使用工具来进行查看,发现Mp4中第一种交错排列,在管理的角度,后者不是更便携嘛?
虽然视频与音频数据是可以独立存在的,音频只是合并到视频文件中,
但是我们的文件一般是顺序下载的。一个位置的音视频数据相隔太远的话会造成卡顿、音画不同步,同时也可以让我们实现边下播。
有了这些之后我们的视频就可以正常播放了,回想一下,在十多年前,我们的视频都是用💽来存储,一个视频动不动就几个G,在那时存储如此昂贵的情况下,如何解决视频占有空间的呢?
6、视频压缩
视频播放的本质:将视频画面从封装文件中进行解码、渲染
那么我们使用GIF图片是不是也行呢?
GIF 图与 MP4 有点相似,都是包含了一组会动态图像的文件
但是相同内容的 GIF 和 MP4 文件体积相差非常大,GIF 会比 MP4 大上好几倍,主要原因是 GIF 缺少帧间编码,无法有效地利用图像间的相关信息
帧内压缩 / 空间压缩
帧内(Intraframe)压缩也称为空间压缩(Spatial compression)。当压缩一帧图像时,
仅考虑本帧的数据而不考虑相邻帧之间的冗余信息,这实际上与静态图像压缩类似。
帧内一般采用有损压缩算法,达不到很高的压缩比。
帧间压缩 / 时间压缩
帧间压缩(Interframe compression)也称为时间压缩(Temporal_compression),是基于许多视频或动画的
连续前后两帧具有很大的相关性(即连续的视频其相邻帧之间具有冗余信息)的特点来实现的。
通过比较时间轴上不同帧之间的数据实施压缩,进一步提高压缩比.一般是无损压缩。
I-frame:Intra-frame 帧内帧 P-frame:Predicted Frame 前向预测帧
B-frame:Bi-Directional frame
由于B帧可以参考和插入在它之前和之后发生的两个(或更多)帧(在时间维度上),所以它可以显著降低帧的大小,同时保持视频质量。B帧能够利用空间冗余和时间冗余(未来的帧和过去的帧),这使得它在视频压缩中非常有用。
小结:
不同类型的帧组合成 GOP 的概念:
视频改变播放进度后,如果不在同一个 GOP 中,需要从新位置所在的 GOP 的 I 帧开始解码
拖动后起播所需的耗时取决于位置在 GOP 中的位置,越靠前能越快响应
不同场景对 GOP 的设置也不一样
| 视频点播 | 节省带宽,高压缩率,会使用 B 帧 |
| 直播 | 低延迟,不使用 B 帧 |
| 视频编辑 | 提高响应,个别会使用全 I 帧 |
视频编码格式 H264 VS H265
H265 压缩比更高,需要更多的算力
H264 : AVC 更普及
H265 : HEVC 更小体积
参考文章
萌新初学,本文为笔记,大佬若有更好的方案欢迎评论区留言