这是我参与「第四届青训营」笔记创作活动的第5天
探索多媒体直播技术
视频的基本元素
像素:是指在由一个数字序列表示的图像中的一个最小单位,通常为一个小方格,每个像素都有自己的用RGB(R:红色G:绿色B:蓝色)表示的颜色值
分辨率:指的是纵横方向的像素数量,一般表示为:宽高(or长宽)
码率/比特率:表示单位时间内传送bit的数目,单位bps,表示是单位时间播放连续的媒体如压缩后的音视频的bit数量,也成码流。
- 越大的比特率,需要更高的带宽来支撑,否则会带来卡顿,成本等问题
- 太低的比特率,可能会导致视频画面过度压缩,模糊不清
帧(Frame):帧就是视屏或者动画中的每一张画面,而视屏和动画特效就是由无数张画面组合而成,每一张画面都是一帧
帧率(Frame Rate):每秒传输帧数通俗来讲就是指动画或者视频的画面数、帧率。
- 每秒钟帧数越多,所显示的动作就会越流畅。
- FPS也可以理解我们通常所说的“刷新率”。太低我们会看到屏幕闪烁、不连贯,对图像显示效果和视觉感观产生不好影响。
封装:
-
视屏数据的封装:视屏编码后,加上音频编码,要一起进行封装。
-
封装:就是封装格式,简单来说,就是将已经编码压缩好的视频轨和音频轨按照一定的格式放到一个文件中
-
主要的视频容器有如下:MPG、VOB、MP4、3GP、ASF、RMVB、WMV、MOV、Divx、MKV、FLV、TS/PS等。
-
视频流与音频流相互交错排列,形成混流。
为什么交错排列呢?
虽然视屏与音频数据是可以独立存在的,不过合并到视频文件后,我们的文件一般是顺序下载的。一个位置的音视频数据相隔太远的话会造成卡顿、音画不同步。
视频压缩
视频播放的本质:将视频从容器中还原出来
由于RGB型号不利于压缩,且眼睛对亮和暗的分辨率要比对颜色的分辨率更精细一些,于是就可以压缩颜色信号,便产生了YUV另一种颜色数字化表示方式。Y(Luma)表示亮度,U和V(Chroma)是色度。
帧内压缩/空间压缩
帧内(Intraframe)压缩也称为(Spatial compression)。当压缩一张图片时,仅考虑本帧的数据而不考虑相邻帧之间的冗余信息,这实际上与静态图像压缩类似。
帧间压缩/时间压缩
帧间(Interframe compression)压缩也称为(Temporal_compression)。是基于许多视频或动画的连续前后两帧具有很大的相关性(即连续的视频其相邻帧之间具有冗余信息)的特点来实现
帧的编码类型:
- I-frame: 帧内帧,不需要依赖其他编码,直接可以还原数据
- P-frame: Predicted Frame 前向预测帧 ,需要本位加前位残差计算帧,也就是需要依赖之前的编码
- B-frame: 双向预测帧 Bi-Directional frame 由于帧可以参考和插入在它之前和之后发生的两个(或多个)帧(在时间维度上),所以它可以显著降低帧的大小,同时保持视屏质量。B帧能够利用空间冗余和时间冗余(在未来的帧和过去的帧),这使得它在视频压缩中非常有用。
编码格式:
- H264:AVC 广泛普及
- H265: HEVC 逐渐推广
- H266:VVC 未来可期
- 压缩比越高的编码算法需要越高的算力支撑
直播推拉流协议
- 推流:主动将数据发送到CDN网络
- 拉流:观众从CDN拉去直播数据
拉流协议:
客户端工作及总结
1.开播过程
2.开播过程
标题:探索多媒体直播技术|青训营笔记