探索多媒体直播技术|青训营笔记

116 阅读2分钟

这是我参与[第四届青训营]笔记创作的第 29 天

一,视频的基本元素

RGB三原色。
分辨率:指的是纵横方向的像素数量,一般表示为:宽高,7201080
码率/比特率:表示单位时间内传送bit的数目,单位bps,表示是单位时间播放连续的媒体如压缩后的音视频的bit数量也是码流,这种bps的单位电信领域上表示速度,及网速,100Mbps
越高的比特率,需要更高的带宽来支撑,否则会卡顿,成本等问题;太低的比特率会导致视频画面过度压缩,模糊不清
ffmpeg:视频处理工具
ffplay:视播放理工具
ffprobe:视频分析工具
帧(Frame):理解帧就是视频或者动画中的每一张画面,而视频和动画特效就是由无数张画面组合而成,每一张画面都是一帧
帧率(Frame Rate):每秒传输帧数,每秒帧数越多,显示动作越流畅。FPS刷新率

轨道/流:
ffprobe-show_packets xxx.mp4
ffmpeg -i input.mp4 -b:v xx output.mp4
ffprobe xxx.mp4

二,视频压缩

颜色空间:YUV,Y:亮度,U,V:色度
视频编码格式:H264:AVC;H265:HEVC;H266:VVC.压缩比越高的编码算法需要越高的算力来支撑。

帧内压缩:也称空间压缩,压缩一帧图像时,只考虑本帧的数据而不考虑相邻帧之间的冗余信息,与静态图像压缩类似
帧间压缩/时间压缩:基于许多视频或动画的连续前后两帧具有很大的相关性的特点来实现。

帧的编码类型

B-frame(双向编码帧),I帧(帧内编码帧),P帧(前向编码帧)。

三,直播推拉流协议

封装格式:MP4,FLV(Flash Video,链式结构),CDN(Content Delivery Network)\

电播:视频播放
直播看播:观众观看直播
推流:主播将数据发送到CDN网络
拉流:观众从CDN拉取直播数据
协议:RTMP,HTTP-FLV,HLS
H264,AAC(编码层),YUV,PCM像素层

RTNP(协议层)

实时消息协议
优点:基于tcp协议,技术成熟,ffmpeg项目中有RTMP库,低延迟
缺点:停止更新,规范上没有支持H265,使用1935端口,会被防火墙阻碍

HTTP-FLV(封装层)

网络视频格式作用流媒体格式
优点:协议友好,格式简单,便于分歧,不转码的情况下直接转发,延迟较低

四,客户端工作及总结

图像采集--(图像处理)--编码+封装--推流
看播端:拉流(HLS,HTTP-FLV)--解封装+解码(将视频数据解码成RGB图像,硬件解码,软件解码(cpu))--(图像处理(超分辨率,美图))--渲染(OpenGL,VULKAN,Native window)
google esoPlayer,bilibili ijkplayer