这是我参与【第四届青训营】笔记创作活动的第四天,学习了多媒体直播相关的内容,了解到了视频的相关属性和直播观看等的基本制作流程。
视频的基本元素
像素
像素是指在由一个数字序列表示的图像中的一个最小单位,通常表现为一个小方格。每个像素有自己的颜色值,一般为RGB三原色来表示。
RGB三原色
可以通过配置红蓝绿三种颜色的值来得到我们想要的颜色,经常用于图片颜色转换
分辨率
分辨率指的是纵横方向的像素数量,一般表示为:宽高(or长宽)
当我们需要很好的观影体验时,片源的分辨率和设备的分辨率都要很高且相同,因为当很大的数据传过来时,虽然片源分辨率很高,而设备很低时,其实是没有太大改善的。
码率/比特率
单位时间内传送 bit 的数目,单位bps,表示是单位时间播放连续的媒体如压缩后的音视频的bit数量,也称为码流。
其实并不是码率越高越好,码率越高就对观看端的网络要求越高,否则会带来卡顿。
帧&帧率
帧:视频或者动画中的每一张画面,而视频和动画特效就是由无数张画面组合而成,每一张画面都是一帧。
帧率:每秒传输帧数通俗来讲就是指动画或视频的画面数、帧率。每秒钟帧数越多,所显示的动作就会越流畅。
轨道/流
一个完整视频的视频数据和音频数据是分开放的,在视频文件里面有一个专门的文件用于放视频数据,为视频轨道
文件中,视频流和音频流数据相互交错排列,原因文件一般是顺序下载的。一个位置的音视频数据相隔太远的话会造成卡顿、音画不同步
视频压缩
压缩方式
原始视频不压缩的话,它的占用大小是非常大的,我们的硬盘是肯定装不下的,这就需要我们去压缩视频。
- YUV:另一种颜色数字化表示方式,这种方式加入了亮度这一概念,在视频存储中,我们可以用更多带宽存储亮度,稍少的带宽留给彩色信号。下图表示的就是降采样。
- 帧内压缩/空间压缩:当压缩一帧图像时仅考虑本帧的数据而不考虑相邻帧之间的冗余信息。
- 帧间压缩/时间压缩:基于许多视频或动画的连续前后两帧具有很大的相关性(即连续的视频其相邻帧之间具有冗余信息)的特点来实现。
帧的编码类型
- 帧内帧(I-frame):不依赖其他的帧,靠自己就可以重构出完整的图像,占的数据量比较大
- 前向预测帧(P-frame):解码时必须将I帧与残差叠加到一起
- 双向预测帧(B-frame):B帧可以参考和插入在它之前和之后发生的两个(或更多)帧(在时间维度上),所以它可以显著降低帧的大小,同时保持视频质量。
CDN
建立并覆盖在lnternet之上,由分布在不同区域的边缘节点服务器群组成的分布式网络。通过智能调度将用户请求到最接近用户的服务节点,降低用户访问延迟,提升可用性。
直播推拉流协议
推流协议
实时消息协议(RTMP)也称实时消息传输协议,是最初由Macromedia为通过互联网在Flash播放器与一个服务器之间传输流媒体音频、视频和数据而开发的一个专有协议。
拉流协议
HTTP-FLV
Flash Video(简称FLV),是一种网络视频格式,用作流媒体格式。
HTTP Live Streaming,缩写为HLS。它的工作原理是把整个流分成一个个小的基于HTTP的文件来下载,每次只下载一些。当媒体流正在播放时,客户端可以选择从许多不同的备用源中以不同的速率下载同样的资源,允许流媒体会话适应不同的数据速率。
客户端工作
开播过程
首先拿到我们想要的画面,图像处理按需进行,然后编码即压缩数据,然后对编码后的数据进行封装最后推流。
看播过程
首先要拉流,然后对数据进行解码(硬件解码:调用手机上的GPU或相关处理芯片 软件解码:CPU进行),可以进行图像处理调节分辨率,最后渲染。
总结
今天的课程对我来说更多的是知识面开阔了很多,视频的流畅程度取决于很多方面,可以在本章第一节进行了解和复习,而对于视频来说,原本的大小非常高,是经过了很多压缩方式才让视频占用空间变小,然后也对直播的推播和看播底层过程有了一定了解。