视频编解码基础概念

454 阅读3分钟
  1. 帧内压缩 将每帧当作一张图片,采用图片压缩算法。 I帧又称关键帧,包含一幅完整画面,解码时不依靠其他帧信息。

  2. 帧间压缩 计算当前帧和前后参考帧的向量差进行编码

    • P帧,又称预测帧,记录了与前一帧画面的差别,需要用前一帧信息生成本帧的画面
    • B帧 使用前后帧(可以是P帧,I帧)去做更好的压缩
  3. GOP 画面组,多帧的集合,包含 I,P,B 帧

  4. 目前常用编码器及发展历史

    • 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 更好,且具备更高压缩比适合网络传输

      借用一张编解码器发展历史图:

      编解码器发展历史.jpg

  5. DTS/PTS

    • DTS: Decoding Time Stamp,AVPacket 解码前/编码后的包, DTS是packet里的成员,表示该什么时候解码.
    • PTS: Presentation Time Stamp,AVFrame 解码后/编码前的信号帧,表示视频的一帧图像, PTS是AVFrame成员, 决定何时呈现
    • 为什么DTS与PTS不一定一致? 视频里的编码不一定是按显示顺序依次进行的, H264/HEVC编码标准里,出现B帧时,编码和输入顺序不一致.
  6. 码率: 每秒数据量

  7. 帧率: 每秒显示的图片数,由于视觉暂留,大于 16 看起来才连贯。

  8. 音频采样率 模拟->数字化, 每秒抽取声波幅度样本次数.例如:音频1024 sample, 44.1k采样率, 1000*1024/44100 = 23.21ms 可变帧率其采样间隔不等,需要用ms处理

  9. 视频内容保护

    • CDN令牌 与网站身份认证系统相似
    • 拥有令牌系统,用户可以下载并分发视频,为避免此情况可以用DRM(实际是既不能防盗版又给正版用户加障碍)
  10. RTC(Real-Time Communications)

    RTC包含采集,编码处理,传输,解码后处理,渲染的功能流程。webRtc是Rtc的一部分,是google专门针对网页前端实时通信的开放框架,可以在 web 浏览器上通过 P2P 协议实现双向实时通信。RTC在直播连麦中采用UDP协议,延时低于几百毫秒。 普通直播采用TCP协议,使用CDN分发,延迟在几秒到十几秒。

  11. 视频封装容器

  • 流式 TS,FLV
  • 索引式 MP4 MOV AVI 等