媒体(视频编解码)排障分三层:底层是MPP(VPU硬解硬编库),中层是GStreamer(管道/插件),上层是零拷贝(dmabuf)这种性能优化手段。本文按这三层把"硬解失败、管道跑不起来、零拷贝反而卡"讲清楚。

三层各有各的报错:MPP层看错误码(MPP_ERR_*)、GStreamer层看管道协商与GST_DEBUG、零拷贝看buffer类型与内存路径。先判断问题在哪一层,再对症。本文基于触觉智能Purple Pi OH2开发板讲解和调试,为大家整理一套多媒体排障全链路指南!
上篇我们把 MPP 裸跑通了:mpi_dec_test 退出码 0、dmesg 里没有 rkvdec timeout,说明 VPU 硬件通路没问题。
但到了 GStreamer 这一层,新的坑才开始——
- 管道建不起来,报
not negotiated - 能跑但黑屏,kmssink / ximagesink 没接对
- 明明开了「零拷贝」,CPU 占用反而没降,甚至更卡
这类问题不再属于 MPP,而属于中间件协商和内存路径:
caps 对没对上、mppvideodec 有没有真走硬解、buffer 是不是真的 memory:DMABuf、有没有偷偷 fallback 成 memcpy。
本篇(下)就接着上篇的通路验证,把 GStreamer 管道排障 + 零拷贝/dmabuf 那层讲清楚,同样每条命令在 RK3576 上可复现。
![]()
RK3576板端实测记录
以下环境触觉智能Purple Pi OH2(RK3576开发板)+Debian Bookworm(内核 6.1.99,arm64)上通过adb直连执行,本文三层结论均得到验证;每一条都可在你的板上直接复制运行:
|
验证项 |
命令(adb shell …) |
实测结果 |
|---|---|---|
|
MPP 硬编 |
mpi_enc_test -w 1280 -h 720 -t 7 -n 30 -o /tmp/t.h264 |
生成有效 H.264,退出码 0 |
|
MPP 硬解 |
mpi_dec_test -t 7 -n 200 -i /tmp/t.h264 |
退出码 0 |
|
GStreamer硬解 |
GST_DEBUG=2 gst-launch-1.0 filesrc location=/tmp/t.h264 ! h264parse ! mppvideodec ! fakesink |
日志见 gstmppdec / RGA enabled,退出 0 |
|
插件注册 |
gst-inspect-1.0 mppvideodec |
rockchipmpp 1.14.4,HEVC/AVC/VP8/VP9 硬解 |
|
零拷贝 caps |
gst-inspect-1.0 mppvideodec | grep -E "DMABuf|arm-afbc" |
video/x-raw(memory:DMABuf)、arm-afbc: 1 |
|
设备节点 |
ls /dev/mpp_service /dev/video-dec0 /dev/video-enc0 /dev/rga |
全部存在 |
|
VPU 超时复位 |
dmesg | grep -i rkvdec |
捕获 rkvdec2 超时 → 自动复位日志 |
-
官方文档依据
docs/cn/Common/MPP/Rockchip_Developer_Guide_MPP_CN.pdfdocs/cn/Linux/Multimedia/Rockchip_User_Guide_Linux_Gstreamer_CN.pdfRockchip_User_Guide_Linux_Rockit_CN.pdfdocs/cn/Common/MEMORY/Rockchip_Developer_Guide_Linux_DMABUF_CN.pdf。
-
SDK源码依据
external/mpp/(mpi.cpp、mpp/codec/{dec,enc}、inc/{rk_mpi.h, rk_mpi_cmd.h, mpp_buffer.h, mpp_frame.h, mpp_packet.h, mpp_task.h, mpp_err.h, mpp_log.h})external/gstreamer-rockchip/gst/(gstmppvideodec.c、gstmppjpegdec.c、gstmpph264enc.c、gstmpph265enc.c、gstmppvp8enc.c、gstkmssrc.c、gstmppallocator.c、gstkmsallocator.c)
Purple Pi OH2开发板,是触觉智能RK3576核心板SOM7609系列配套的评估开发板,搭载4核A72+4核A53+M0多核异构处理器,主频2.2GHz,集成6Tops算力 NPU,轻松应对AI推理、边缘计算与轻量级AI端侧学习。配套完善SDK、丰富资料与Demo,有助于项目前期快速开发验证。
本文聚焦瑞芯微RK3576平台视频硬解在GStreamer管道层与零拷贝(dmabuf)层的典型问题,包括管道无法建立、黑屏、零拷贝失效导致CPU占用反升等。基于Purple Pi OH2开发板实测,结合caps协商、buffer类型验证、硬解路径确认及GST_DEBUG日志分析,系统梳理GStreamer与MPP协同排障方法,覆盖硬解通路验证后的中间件级调试全链路。

3157

被折叠的 条评论
为什么被折叠?



