2382268_zh-CN

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

2382268_zh-CN

2382268_zh-CN

IMX8MPLUS - 来自摄像机的 H.264/2656 编码视频流的比特率变化

您好,

我正在使用 NXP i.MX8Mplus 开发一款相机模块产品。我使用两台摄像机,一台通过 USB 连接,另一台通过 MIPI-CSI2 接口连接。数据路径如下所示:

摄像头传感器 -> MIPI-CSI -> ISP(绕过,仅 DMA) -> GPU(OSD) -> VPU(硬件编码器) -> 以太网上的 RTSP 流。

我将编码视频流的比特率设置为 4 Mbps。流水线设置如下所示:

gst-launch-1.0-v \
v4l2src 设备=/dev/video2 io-mode=dmabuf !\
video/x-raw,format=NV12,width=1920,height=1080,framerate=30/1 !\
vpuenc_hevc 比特率=4000 gop-size=60 !\
h265parse 配置间隔=1!\
fakesink 同步=false

问题:客户反映比特率波动很大,波动幅度为 +/- 50%,有时甚至高达 100%。客户期望的偏差必须限制在20%以内。

我们该如何实现这一点?我发现我使用的 IMX8Mplus SDK 不支持 CBR。我使用的是 Yocto SDK,旧版本是 'mikeldore' 分支:

repo init -u https://github.com/nxp-imx/imx-manifest.git -b imx-linux-mickledore -m imx-6.1.55-2.2.0.xml


请告知我们:

- 如果有可能将波动幅度降低到 20%,如果可以,该如何做?


谢谢!

潘卡杰


Re: IMX8MPLUS - Bit rate variations for H.264/2656 coded Video stream from Camera

i.MX95 确实支持通过 V4L2 对 H.264/H.265 进行编码器恒定比特率控制,但“稳定比特率”应该理解为 CBR 目标控制,而不是完全固定的瞬时输出。

Re: IMX8MPLUS - Bit rate variations for H.264/2656 coded Video stream from Camera

谢谢你的回复,一平。我现在正在尝试这些建议。还有一个问题,IMX95编码器是否支持稳定比特率?


谢谢!

潘卡杰


Re: IMX8MPLUS - Bit rate variations for H.264/2656 coded Video stream from Camera

是的,你可以减少这种波动,但是:

  • 在 i.MX8MP VPU 上实现严格的±20% 比特率精度无法保证
  • 通过适当的调整,可以有效地将误差范围从±50–100%降低到~±20–40%。
  • 真正的基于条件的推理(CBR)需要:
    • 基于 v4l2 的编码器(v4l2h264enc / v4l2h265enc)
    • 显式速率控制 + QP 约束

 

步骤 1 — 切换到 V4L2 编码器(关键)

代替:

vpuenc_hevc

其中:

v4l2h265enc

步骤 2 — 启用实际速率控制 + CBR 模式

gst-launch-1.0-v \

v4l2src 设备=/dev/video2 io-mode=dmabuf !\

video/x-raw,format=NV12,width=1920,height=1080,framerate=30/1 !\

v4l2h265enc extra-controls="encode, \

frame_level_rate_control_enable=1, \

video_bitrate_mode=1, \

video_bitrate=4000000, \

h265_min_qp=20, \

h265_max_qp=30" !\

h265parse 配置间隔=1!\

fakesink 同步=false


步骤 3 — 调整 QP 范围(最重要)

设置

影响

宽 QP(例如)10–51)

比特率大幅波动

窄 QP(例如)20–30)

变异性较低,质量较低

非常窄(例如)24–28)

接近CBR行为

针对以下要求:

  • 初始值:QP 范围 = 20–30
  • 如果差异仍然大于 20% → 收紧至 22–28
  •  

第四步——共和党/I框架控制

您当前的:

gop-size=60

问题:

  • I帧会导致比特率大幅波动(2-5倍比特率)

gop-size=30(GOP字形越短越好)

减轻:

或者(更好):

  • 启用帧内刷新(如果支持)
  • 避免IDR峰值过大

步骤 5 — 可选的平滑(网络层面)

即使经过编码器调整,仍可能存在短脉冲串。

添加:

  • 队列 + rtpjitterbuffer
  • 或套接字缓冲区整形

即使编码器出现波动,这也能平滑网络比特率。

タグ(1)
評価なし
バージョン履歴
最終更新日:
‎06-18-2026 02:28 AM
更新者: