跳转到正文
实验记录
RV1126B⟳ 进行中

#020 · MPP H.264 硬编码实验 ​

实验目标 ​

在 RV1126B 上使用 Rockchip MPP(Media Process Platform)将 NV12 格式图像编码为 H.264 码流,测试不同码率和帧率下的编码性能。


实验环境 ​

项目内容
开发板RV1126B
内核版本5.10.x
MPP 版本1.5.x
输入格式NV12
输出格式H.264 (AVC)
分辨率1920×1080
目标帧率30 FPS

实验原理 ​

NV12 图像数据
    ↓
MPP 编码接口 (mpi_enc)
    ↓
H.264 码流 (NALU)

实验步骤 ​

Step 1:确认 MPP 设备节点 ​

shellbash
ls -la /dev/mpp_service
ls -la /dev/rga

Step 2:生成测试用 NV12 数据 ​

shellbash
# 使用 yuv4mpeg 生成一帧 1080P NV12 测试数据
# 或使用 V4L2 采集一帧

Step 3:调用 mpi_enc 编码 ​

mpp_enc.cc
#include "mpi_enc.h"

int main() {
    // 1. 初始化 MPP 编码
    MppEncCfg cfg;
    mpp_enc_cfg_init(&cfg);
    cfg.type = MPP_VIDEO_CodingAVC;
    cfg.width = 1920;
    cfg.height = 1080;
    cfg.fps = 30;
    cfg.bitrate = 4000; // kbps

    // 2. 创建编码上下文
    MppCtx ctx;
    mpp_create(&ctx, NULL);
    mpp_init(ctx, MPP_CTX_ENC, MPP_VIDEO_CodingAVC);

    // 3. 输入一帧 NV12,输出 H.264 码流
    // ...

    return 0;
}

Step 4:保存码流并播放验证 ​

shellbash
# 使用 ffplay 播放编码后的 H.264 码流
ffplay output.h264

实验结果 ​

预期 ​

  • 编码输出 H.264 码流可正常播放
  • 1080P 30FPS 编码 CPU 占用 < 10%
  • 码率控制在目标值 ±10% 范围内

实际 ​

  • ⏳ 进行中,目前编码输出画面存在花屏现象
  • 🔍 怀疑是 stride 对齐或颜色空间转换问题

遇到的问题 ​

问题:编码输出画面花屏 ​

  • 现象:ffplay 播放 output.h264 画面有明显马赛克和绿边
  • 初步判断:
    1. NV12 数据 stride 未对齐
    2. 颜色空间转换错误
    3. 编码参数配置错误
  • 排查状态:进行中

性能数据(待更新) ​

指标数据
编码帧率TBD
CPU 占用TBD
实际码率TBD
编码延迟TBD

相关知识 ​


下一步 ​