# VPU使用指南 ***Copyright © Quectel Wireless Solutions Co., Ltd. 2026. All rights reserved.*** --- # VPU 是什么 **VPU**(Video Processing Unit,视频处理单元)是 RK3576 集成的 **专用视频编解码硬件**。它独立于 CPU 工作,专门负责 H.264、H.265、AV1、VP9、JPEG 等视频/图像的编码与解码。 **没有 VPU 会怎样?** 播放高清视频时 CPU 要满负荷软件解码,容易卡顿、发热、耗电;有了 VPU,解码完全由硬件完成,CPU 可以空闲处理其他任务,4K 视频也能流畅播放。 # VPU 能做什么(使用场景) | **场景** | **说明** | **对应操作** | | --- | --- | --- | | 播放视频 | 硬解 H.264/H.265/AV1/VP9 视频 | GStreamer 播放 | | 录制视频 | 摄像头画面硬编码成 H.264 文件 | GStreamer 编码 | | 视频转码 | 一种格式转成另一种 | 解码+编码串联 | | 视频推流 | 实时编码后网络传输 | 编码 + UDP 输出 | # 在 M2 上使用 VPU ## 场景 1:硬件解码播放视频(最常用) 板载测试视频直接硬解播放: ```bash # 播放板载 720p 测试视频(硬件解码) gst-launch-1.0 filesrc location=/oem/SampleVideo_1280x720_5mb.mp4 ! \ qtdemux ! h264parse ! mppvideodec ! waylandsink ``` | **部分** | **作用** | | --- | --- | | filesrc | 读取视频文件 | | qtdemux | 解封装(拆出 H.264 流) | | h264parse | 解析 H.264 码流 | | **mppvideodec** | **VPU 硬件解码(关键)** | | waylandsink | 显示到屏幕(GPU 渲染) | > 播放流畅、CPU 占用低(可用 `top` 观察,解码进程 CPU 占用应很低),说明 VPU 在工作。 ## 场景 2:硬件编码(把画面录成视频) 把测试画面硬编码为 H.264 文件: ```bash # 生成 30 帧测试画面并硬编码成 H.264 gst-launch-1.0 videotestsrc num-buffers=30 ! videoconvert ! \ video/x-raw,format=NV12,width=640,height=480 ! \ mpph264enc ! filesink location=/tmp/test.h264 # 查看生成的文件 ls -la /tmp/test.h264 ``` 也可以把硬解的视频重新硬编码(转码): ```bash gst-launch-1.0 -e filesrc location=/oem/SampleVideo_1280x720_5mb.mp4 ! \ qtdemux ! h264parse ! mppvideodec ! videoconvert ! \ video/x-raw,format=NV12 ! mpph264enc ! filesink location=/tmp/out.h264 ``` ## 场景 3:解码性能测试(验证 VPU 速度) 用 MPP 自带的解码测试工具看 VPU 每秒能解多少帧: ```bash # 解码 200 帧 720p H.264 裸流 mpi_dec_test -i /oem/200frames_count.h264 -t 7 -w 1280 -h 720 -n 200 -v f ``` M2 实测结果: | **分辨率** | **格式** | **并发数** | **帧率** | **实时倍速** | | --- | --- | --- | --- | --- | | 1280x720 | H.264 | 1 路 | 3003 fps | 100x | | 1920x1080 | H.264 | 1 路 | 2962 fps | 124x | | 1280x720 | H.264 | 4 路并发 | 2907 fps/路 | 97x/路 | | 1280x720 | H.264 | 8 路并发 | 2840 fps/路 | 95x/路 | > 8 路 720p 并发解码毫无压力,适合 NVR/多路监控场景。 # VPU 支持的格式(M2 / SMARC 相同) | **类型** | **格式** | **GStreamer 插件** | | --- | --- | --- | | 解码 | H.264 / H.265 / AV1 / VP8 / VP9 / MPEG4 | mppvideodec | | 解码 | JPEG | mppjpegdec | | 编码 | H.264 | mpph264enc | | 编码 | H.265 | mpph265enc | | 编码 | JPEG | mppjpegenc | # 环境确认(一步检查 VPU 是否就绪) ```bash # VPU 设备节点存在 ls /dev/mpp_service # GStreamer 硬件插件存在 gst-inspect-1.0 | grep -i rockchipmpp # 预期输出:mpph264enc / mpph265enc / mppjpegdec / mppjpegenc / mppvideodec ``` # SMARC(Buildroot)使用说明 SMARC 板的 VPU 与 M2 完全相同(同一颗 RK3576),上述所有命令 **直接复用**。 唯一差异:库路径不同。 ```bash # M2 (Debian): /usr/lib/aarch64-linux-gnu/librockchip_mpp.so* # SMARC (Buildroot): /usr/lib/librockchip_mpp.so* ``` # 常见问题 | **问题** | **解决** | | --- | --- | | 播放黑屏/无画面 | 确认在图形桌面会话运行;`waylandsink` 需要 Wayland 环境 | | 提示 mppvideodec 不存在 | 安装 `gstreamer1.0-rockchip1`(两平台预装) | | 编码报 invalid format | 输入像素格式需为 NV12(加 `video/x-raw,format=NV12`) | | 解码花屏 | 输入需为 H.264 裸流或 mp4 容器(先 qtdemux 解封装) |