-
帧内压缩 将每帧当作一张图片,采用图片压缩算法。 I帧又称关键帧,包含一幅完整画面,解码时不依靠其他帧信息。
-
帧间压缩 计算当前帧和前后参考帧的向量差进行编码
- P帧,又称预测帧,记录了与前一帧画面的差别,需要用前一帧信息生成本帧的画面
- B帧 使用前后帧(可以是P帧,I帧)去做更好的压缩
-
GOP 画面组,多帧的集合,包含 I,P,B 帧
-
目前常用编码器及发展历史
-
H.264/AVC 使用需支付专利许可费 开源实现: a. 思科openh264,只支持baseline profile,CPU占用低
b. x264仅作为编码器使用 -
H.265/HEVC 同等画质下比特率减少了50%,使用需要支付0.5%的内容收入。开源实现:x265,硬件厂商如高通 intel 苹果等支持较好
-
VP8, google发布libvpx, 开源实现libvpx,硬件支持有限
-
VP9,体积比VP8低50%,唯一开源实现libvpx 免费,硬件支持有限
-
AVS,我国有自主知识产权,AVS2.0 是同h265,vp9同级的新一代标准。
-
MPEG4 也是一种视频压缩格式,采用帧间压缩,仅存储连贯帧之间差别信息,所以其单个画面清晰度高。运动 画面连贯性方面264,265 更好,且具备更高压缩比适合网络传输
借用一张编解码器发展历史图:
-
-
DTS/PTS
- DTS: Decoding Time Stamp,AVPacket 解码前/编码后的包, DTS是packet里的成员,表示该什么时候解码.
- PTS: Presentation Time Stamp,AVFrame 解码后/编码前的信号帧,表示视频的一帧图像, PTS是AVFrame成员, 决定何时呈现
- 为什么DTS与PTS不一定一致? 视频里的编码不一定是按显示顺序依次进行的, H264/HEVC编码标准里,出现B帧时,编码和输入顺序不一致.
-
码率: 每秒数据量
-
帧率: 每秒显示的图片数,由于视觉暂留,大于 16 看起来才连贯。
-
音频采样率 模拟->数字化, 每秒抽取声波幅度样本次数.例如:音频1024 sample, 44.1k采样率, 1000*1024/44100 = 23.21ms 可变帧率其采样间隔不等,需要用ms处理
-
视频内容保护
- CDN令牌 与网站身份认证系统相似
- 拥有令牌系统,用户可以下载并分发视频,为避免此情况可以用DRM(实际是既不能防盗版又给正版用户加障碍)
-
RTC(Real-Time Communications)
RTC包含采集,编码处理,传输,解码后处理,渲染的功能流程。webRtc是Rtc的一部分,是google专门针对网页前端实时通信的开放框架,可以在 web 浏览器上通过 P2P 协议实现双向实时通信。RTC在直播连麦中采用UDP协议,延时低于几百毫秒。 普通直播采用TCP协议,使用CDN分发,延迟在几秒到十几秒。
-
视频封装容器
- 流式 TS,FLV
- 索引式 MP4 MOV AVI 等