这是我参与「第四届青训营 」笔记创作活动的第3天
一、本堂课重点内容:
- 熟悉视频技术的基础要素
- 了解相关直播推拉流协议
- 对直播客户端工作及总结
二、详细知识点介绍:
2.1视频的基本元素
像素
在由一个数字序列表示的图像中的一个最小单位,称为像素,通常表现为一个小方格。每个像素有自己的颜色值,一般为RGB 三原色来表示。
RGB颜色
RGB色彩由自然界中光的三原色的混合原理发展而来。RGB分别代表红色(Red)、绿色(Green)、蓝色(Blue)。R、G、B均可以从0到255取值,相组合形成了可变化的颜色。
分辨率
指的是纵横方向的像素数量,一般表示为:宽* 高 (或者 长* 宽) 常用的分辨率包括4K、2K、1080p、720p等。
码率(比特率)
表示单位时间内传送 bit 的数目,单位bps,表示是单位时间播放连续的媒体如压缩后的音视频的bit数量,也称为码流。
越高的比特率,需要越高的带宽来支撑,否则会造成卡顿,而太低的比特率,可能会导致视频画面过度压缩,模糊不清。通过改变码率可以让视频文件在保持帧率、分辨率的情况下减少文件体积。
帧与帧率
视频中每一幅画面就是一帧,视频就是由一帧一帧所构成的。
帧率即每秒传输的帧数,单位为FPS(frame per second)。
FPS越高,显示的画面越流畅;FPS越低,肉眼会感受到视频的闪烁与不连贯。
封装
封装就是将已经编码压缩好的视频轨和音频轨按照一定的格式放到一个文件中。
目前主要的视频容器有如下: MPG、VOB、MP4、3GP、ASF、RMVB、WMV、MOV、Divx、MKV、FLV、TS/PS等。在视频进行封装后,就可以上传了
2.2视频压缩
视频播放的本质:将视频画面从封装文件中进行解码、渲染。
视频压缩主要分为帧内压缩与帧间压缩。
帧内压缩/空间压缩
帧内(Intraframe)压缩也称为空间压缩(Spatial compression)。当压缩一帧图像时,仅考虑本帧的数据而不考虑相邻帧之间的冗余信息,帧内一般采用有损压缩算法,达不到很高的压缩比。
帧间压缩/时间压缩
帧间压缩(Interframe compression) 也称为时间压缩(Temporal_compression),是基于许多视频或动画的连续前后两帧具有很大的相关性的特点来实现的。通过比较时间轴上不同帧之间的数据实施压缩,进一步提高压缩比,一般是无损压缩。
这也就是为什么相同的视频GIF文件要比MP4大许多的原因。
帧的编码类型主要有I-frame(帧内帧)、P-frame(前向预测帧)、B-frame(双向预测帧)三种。
视频编码格式
目前主流的视频编码格式有:H264与H265。相比而言,H264更加普及,而H265压缩率更高。
2.3视频推拉流格式
CDN技术
CDN: Content Delivery Network
指建立并覆盖在Internet 之上,由分布在不同区域的边缘节点服务器群组成的分布式网络。通过智能调度将用户请求到最接近用户的服务节点,降低用户访问延迟,提升可用性。
推拉流协议
RTMP: 是一种实时消息协议,具有基于 tcp 协议,技术成熟,低延迟等优点,但也具有规范上没有支持 H265;使用 1935 端口,会被防火墙阻碍的缺点。
HTTP-FLV:HTTP + Flash Video(简称FLV),是一种网络格式,用作流媒体格式。 协议友好,格式简单,便于分发
HLS: 是HTTP Live Streaming的缩写,是由苹果公司提出基于HTTP的流媒体网络传输协议。
2.4客户端工作相关知识
推流端
图像采集的方式主要有:摄像头、屏幕、图像采集卡等,而图像处理的场景主要有:美颜、绿幕、头饰。
拉流端
三、实践练习例子:
- 课后可以结合FFmpeg手撕视频(Android端) - 掘金 (juejin.cn)对FFmpeg进行实操,以更好地了解相关音视频技术。
四、课后个人总结:
通过本堂课,我收获了音视频的相关技术,熟悉了视频的基本元素以及视频压缩与视频推拉流的相关知识。
五、引用参考:
部分图片来源于: