这是我参与「第四届青训营 」笔记创作活动的第5天
直播在当下是比较火的一种形式,在生活中非常常见,也是许多人生活中兴趣的一部分。
一、视频的基本元素
- 像素:指在由一个数字列表表示的图像中的一个最小单位,通常表现成一个小方格,每个像素都有自己的颜色值。【像素图也被称为点阵图】
- RGB三原色:R、G、B分别从0到255,一共256个等级,用这几个值来表示颜色
- 分辨率:指纵横方向的像素数量
- 码率\比特率:表示单位时间内传送的bit的数目,单位为bps,表示的是单位时间播放连续的媒体如压缩后的音视频的bit数量,也成为码流。【比特率不是约高越好,要考虑宽带的承受能力】
- 帧率:每秒传输帧数,和视频的流畅度有关
- 视频数据封装:将已经编码压缩好的视频轨和音频轨按照一定的格式放到一个文件中
二、视频压缩
- 帧内压缩\空间压缩:只考虑本帧的数据,不考虑相邻帧之间的冗余信息
- 帧间压缩\时间压缩:基于许多视频或动画的连续前后两帧具有很大的相关性【即连续的视频其相邻帧之间具有冗余信息】的特点来实现的
- 封装格式:mp4、FLV等
三、直播推拉流协议
名词解释
- 点播:视频播放
- 直播看播:观众观看直播
- 推流:主播将数据发送到CDN网络
- 拉流:观众从CDN拉取直播数据
不同情况采用不同的协议,例如需要实时交流的场景,使用低延迟选用WebRTC的协议
推拉流协议方案:RTMP、HTTP-FLV、HLS
RTMP:(推流协议)实时消息协议,也称实时消息传输协议,优点:基于TCP协议、技术成熟,ffmpeg项目中有RTMP库、低延迟;缺点:停止更新、规范上没有支持H265、使用1935端口,会被防火墙阻碍。
HTTP-FLV:(拉流协议)是一种网络视频格式,用作流媒体格式。协议友好、格式简单、便于分发、不转码的情况下直接转发即可、延迟较低
HLS:(拉流协议)苹果公司推出的,是把整个流分成一个个小的基于HTTP的文件下载,每次只下载一点。在开始一个流媒体会话时,客户端会下载一个包含元数据的扩展M3U8播放列表文件