数据------>解协议----->封装格式数据---->解封装---(音视频流数据)---->(音视频解码)--->音视频数据--->(硬件加速声卡,显卡)-->呈现出画面与声音
1.协议层:(protocol layer)----http/rtmp/file
2.封装层:(format layer)-----mkv/mp4/flv/avi
3.编码层:(code layer)---h264/h265/mpeg2/mpeg4
4.像素层:(pixel layer)---yuv420p/yuv422p/yuv444p/rgb24
流媒体开发
网络层:socket负责传输
协议层:rtmp/hls负责网络打包
封装层:flv/ts负责编解码数据的封装
帧:每帧代表这一副静止的图像
GOP:GOP就是一组连续的画面,每个画面都是一帧,一个GOP就是很多帧的集合。GOP cache长度越长,画面质量就越好
码率:图片进行压缩后每秒显示的数据量
帧率:每秒显示图片的数,人眼所看到的画面在16帧以上,就会认为是连贯的
分辨率:图片的长度&宽度,图片的尺寸
压缩前每秒数据:帧率 *分辨率
压缩比:压缩前的每秒钟数据/码率,(压缩比越高,画面质量越差)
视频文件格式:wmv,mov,mp4,mp3,avi,
视频封装格式:一种存储视频信息的容器,流式封装:TS\FLV,索引封装:MP4\MOV\AVI,主要作用:一个视频文件往往包含图像和音频,还有一些配置信息,这些内容按照一定的规则拼装起来
注意:封装格式和文件格式一样,因为一般视频文件格式的后缀即采用相应的视频封装格式的名称,所以视频文件格式就是视频封装格式
视频封装格式&视频压缩编码标准:(项目工程,编程语言):
视频编码技术:
MPEG:帧间压缩,存储连续帧直接的有差别的地方,从而达到较大的压缩比
H264:世面广泛使用的,算法比较复杂
H264组成:1.网络提取层(Network Abstraction Layer)NAL 2,视讯编码层(Video Coding Layer)VCL
Slice编码构成:I帧,P帧,B帧
H.264 stream consists of a sequence of NAL Units
SPS:序列参数集,作用于一系列连续的编码图像
PPS:图像参数集,作用于编码视频序列中的一个或多个独立的图像
参数集是一个独立的数据单位,不依赖参数集外的其他语法元素,只有编码器认为需要更新参数集内容时,才会发出新的参数集
H265:基于H264,使用原来的技术,将相关的技术加以改进,例如码流,编码质量,延时,传输时更省带宽
I帧:关键帧 解码关键
P帧(差别帧):保留帧与前帧的区别,解码需要缓存画面叠加本帧定义的差别,生成最终的画面,P帧只存储差别数据,并不是完整帧
B帧:双向帧
合成muxing: 将视频流、⾳音频流、字⺟母流合成封装到⼀一个⽂文件中,作⽂文⼀一个信号进⾏行行传输