流媒体协议
什么是视频
视频就是连续快速播放的一串图片,所以视频由一张张的图片构成。每一张图片称为一帧。每秒播放的图片数就称为帧率。
每一张图片由一个个的像素点组成,而每一个像素点RGB表示(8位*3=24位)
编码
存储所有的信息太大了,需要丢弃一部分不重要的数据,这个过程就是编码,实际是一个压缩过程。
压缩过程的特点:
- 空间冗余:一张图片中,相邻像素相似,可以间隔保存
- 时间冗余:时间上,连续相邻的几张图片相似,可以间隔抽样保存
-
视觉冗余:不重要的细节,可以丢失
image.png
编码的两大流派:
- itu的vceg,侧重编码传输
- iso的mpeg,侧重存储,后来也重视传输
后来合并成了h.264/mpeg-4 avc
直播的流程
image.png编码的流程
图片帧的分类:
- I帧:关键帧,完整的图片,不依赖其它帧就可以解码
- P帧:向前预测帧,表示和前一个关键帧的差别,需要和一个帧叠加才能解码
- B帧:双向预测帧:与前后两帧的差别,要去的前后两帧的画面才可解码
帧的构成:
image.png
一个帧由多个片构成,一个片由多个宏块构成,一个宏块由多个子块构成。帧-》片-》宏-》子块
压缩成的二进制流格式:
由一个个的网络提取层单元(NALU, network abstraction layer unit)构成,目的是为了便于传输。
image.png
NALU的构成:
- 起始标识:标识间隔
- header:类型信息
- pyload:承载的数据
一个Nalu中保存的是一片数据。
编码的整个过程:一个视频拆分为一个个帧,每一个帧拆成一系列分片,每一个分片放在一个NALU中,每个NALU之间通过起始标识分隔,从而形成长长的NALU序列。
网友评论