正常的一个编码器的架构是怎么样,有哪些模块构成

发布于:2025-03-14 ⋅ 阅读:(19) ⋅ 点赞:(0)

正常的一个编码器架构及其模块构成

在音视频编码器(Video Encoder)中,通常包括多个核心模块,整个编码器架构遵循 输入 -> 预处理 -> 编码核心 -> 码流封装 的流程。


1. 编码器的整体架构

编码器的主要架构如下:

┌──────────────────────────────────┐ │ **视频输入 (RAW/YUV)** │ │ 传感器、视频文件、摄像头数据等 │ └──────────────┬─────────────┘ │ ┌──────────────┴──────────────┐ │ **预处理模块 (Preprocessing)** │ │ 颜色空间转换、缩放、去噪、帧率调整 │ └──────────────┬──────────────┘ │ ┌──────────────┴──────────────┐ │ **编码核心 (Encoding Core)** │ │ (1) 帧内/帧间预测 │ │ (2) 变换量化 │ │ (3) 熵编码 │ └──────────────┬──────────────┘ │ ┌──────────────┴──────────────┐ │ **码流封装 (Bitstream Packaging)** │ │ 组帧、NALU 组包、RTP 打包等 │ └──────────────┬──────────────┘ │ ┌──────────────┴──────────────┐ │ **网络/存储 (Network/Storage)** │ │ 传输(RTMP/SRT)或存储(MP4/TS) │ └────────────────────────────┘


2. 主要模块详解

(1) 预处理模块(Preprocessing)

主要功能:

  • 颜色空间转换(RGB -> YUV420P)
  • 图像缩放(如 1080P 转 720P)
  • 去噪(降噪滤波)
  • 帧率调整(如 30fps 降到 15fps)

技术实现:

  • FFmpeg swscale 进行颜色转换:
(2) 编码核心(Encoding Core)

主要模块:

  1. 帧内预测(Intra Prediction)
    • 只利用当前帧信息,适用于静态场景。
    • H.264 支持 9 种方向预测模式
  2. 帧间预测(Inter Prediction)
    • 使用 P 帧(前向参考)或 B 帧(前后参考)减少数据量。
    • 运动估计算法:块匹配算法(Block Matching Algorithm)
  3. 变换量化(Transform & Quantization)
    • 使用 DCT(离散余弦变换) 提取重要信息。
    • 量化(Quantization)降低数据精度以减少比特率。
  4. 熵编码(Entropy Coding)
    • 采用 CABAC/CAVLC 进行无损压缩,降低码率。

技术实现:

  • H.264 采用 CAVLC 或 CABAC 算法进行熵编码:

(3) 码流封装(Bitstream Packaging)

主要功能:

  • 将编码后的数据封装成标准 NALU(Network Abstraction Layer Unit) 格式。
  • 组成 GOP(Group of Pictures),提高解码效率。
  • 支持不同封装格式
    • RTMP 直播流:封装为 FLV
    • RTP 传输:封装为 RTP 包
    • 存储:封装为 MP4 或 TS

技术实现:

  • 使用 FFmpeg 将编码数据封装为 MP4:

(4) 网络传输(Streaming / Storage)

主要功能:

  • 直播:RTMP / SRT / RTP
  • 存储:MP4 / TS / FLV
  • 码率控制(CBR / VBR)

技术实现:

  • FFmpeg 推 RTMP 流:

3. 编码器的技术难点

(1) 码率控制(Bitrate Control)

  • CBR(固定码率):适合直播,码率固定,但质量可能下降。
  • VBR(可变码率):适合本地存储,质量更好但码率波动大。
  • 解决方案
    • 使用 QP 调节,适当降低复杂帧的 QP 值

(2) 低延迟优化(Low Latency Encoding)

  • 关键问题
    • H.264 默认有 B 帧(双向预测帧),导致延迟增加。
    • 解决方案
      • 禁用 B 帧
      • 使用超快编码模式

(3) 音视频同步(A/V Synchronization)

  • 问题
    • 视频帧率和音频采样率不同,可能导致 音画不同步
  • 解决方案
    • 计算 音视频时间戳(PTS/DTS),确保时间基一致:

总结

编码器的核心架构

  1. 视频采集 & 预处理(去噪、缩放、格式转换)
  2. 编码核心(帧内/帧间预测、变换量化、熵编码)
  3. 码流封装(H.264/H.265 NALU 结构)
  4. 网络传输 & 存储(RTMP/SRT 推流、MP4 录制)

常见技术难点

  1. 码率控制(CBR/VBR 调优)
  2. 低延迟优化(禁用 B 帧、减少缓冲)
  3. 音视频同步(时间戳调整)

掌握 FFmpeg、H.264/H.265 编码技术、SRT/RTMP 传输,能更好地进行音视频编码优化!


网站公告

今日签到

点亮在社区的每一天
去签到