Seeed Studio2026-11-08

Raspberry Pi 5 与 RK3588:可复现的 4K H.264 编码基准测试

使用经过校验的相同输入、原始运行数据和离线双语结果仪表板,对比 Raspberry Pi 5 与 reComputer RK3588 上的 FFmpeg/libx264 软件编码,以及 Rockchip MPP 硬件编码。

BenchmarkRaspberry Pi 5RK3588VPUH.264FFmpegGitHub

在 YouTube 观看 · 打开交互式仪表板 · 源码仓库

本项目比较三条视频编码路径:Raspberry Pi 5 上的 FFmpeg/libx264、Seeed reComputer RK3588 Devkit 上的 FFmpeg/libx264,以及 RK3588 上通过 GStreamer 使用的 Rockchip MPP 硬件编码。两块开发板均配备 16 GB RAM。

源码仓库提供复现脚本、逐次运行的 CSV 数据和独立的英中双语 HTML 仪表板,可用于分析本次测试中吞吐量、进程 CPU 使用率与输出画质之间的取舍。

实测结果

以下数值来自仓库的汇总 CSV。每条编码路径均运行三次,使用加载到 RAM 中的同一份 300 帧输入。

指标Raspberry Pi 5: libx264RK3588: libx264RK3588: MPP H.264
耗时中位数24.64 s20.04 s10.37 s
吞吐量(300 / 耗时中位数)12.18 fps14.97 fps28.93 fps
进程 CPU 使用率中位数327%357%54%
相对于未压缩源的 SSIM All0.9953760.9953780.991389
代表性输出码率10.21 Mbps10.21 Mbps9.70 Mbps

在本测试配置下,RK3588 MPP 的吞吐量约为 Pi 5 libx264 的 2.38 倍。MPP 的单次运行耗时分别为 10.93、10.37 和 9.86 秒,其中两次超过了输入片段的 10 秒时长。

测试条件

项目配置
Raspberry Pi 516 GB; Debian 13 Trixie; FFmpeg 7.1.5
reComputer RK3588 Devkit16 GB; Armbian 26.8.7 (Ubuntu 26.04); 厂商内核 6.1.172; Rockchip MPP 1.5.0-1 插件
输入Big Buck Bunny Sunflower; 3840 × 2160; 30 fps; 300 帧; NV12
片段选择从 00:01:00 开始的 10 秒
计时输入位置/dev/shm/rkpi_real_4k_10s.nv12
目标编码设置H.264; 10 Mbps; GOP 60
libx264 设置-preset veryfast -threads 4 -maxrate 10M -bufsize 20M
MPP 设置mpph264enc rc-mode=cbr bps=10000000 gop=60

MPP 是 Rockchip 专用路径,仅在 RK3588 上使用。这里的 Pi 5 路径采用软件编码。

复现基准测试

前置条件

使用类似 Debian/Ubuntu 的 Linux 环境,并安装 git、bash、wget、unzip、sha256sum、ffmpeg、ffprobe 和 /usr/bin/time。准备脚本还会使用 stat、df、cp 等标准工具。FFmpeg 必须提供 libx264 编码器和 SSIM 滤镜。

如需在 RK3588 上进行硬件编码,请安装合适的 Rockchip/Seeed GStreamer 环境,包含 gst-launch-1.0、mpph264enc 元素及可正常工作的 MPP 驱动。提供的 MPP 脚本会调用 sudo;实测系统镜像需要提升权限才能访问 /dev/mpp_service。

原始输入占用 3,732,480,000 字节(3.48 GiB),RAM 中还会保留一份副本。上游项目建议使用 16 GB RAM,并确保 /dev/shm 约有 4 GB 可用空间。还需为源 ZIP、解压后的 MP4、原始输入和编码输出预留磁盘空间。

在两块开发板上准备相同输入

在每台设备各自的仓库检出目录中运行。固定的版本与上文记录的结果对应。

bash
git clone https://github.com/Seeed-Projects/raspberrypi-rockchip_benchmark_lab.git
cd raspberrypi-rockchip_benchmark_lab
git checkout b7758d37bdc2b20b1cdf85acc25a94c349d9fc13
bash scripts/00_prepare_input.sh

准备脚本会下载 Blender 源 ZIP、提取片段、检查字节数与 SHA-256,并将验证通过的 NV12 输入复制到 /dev/shm。原始输入预期的 SHA-256 为:

text
d1e3403d6886a5472c7261dfe07a4149b941d1d7bdfa92d46f181dff381f5fd7

若校验失败,请停止。源片段提取属于准备步骤,不应计入编码耗时。

运行对应的编码路径

在 Raspberry Pi 5 上:

bash
bash scripts/01_cpu_encode.sh pi5
bash scripts/03_measure_quality.sh output/cpu_pi5_run2.mp4

在 RK3588 上:

bash
bash scripts/01_cpu_encode.sh rk3588
bash scripts/02_rk3588_mpp.sh
bash scripts/03_measure_quality.sh output/cpu_rk3588_run2.mp4
bash scripts/03_measure_quality.sh output/mpp_rk3588_run2.mp4

每个编码脚本均运行三次。输出写入 output/,计时与画质日志写入 logs/。请检查退出状态和输出帧数;每个输出应包含 300 帧。画质脚本以已校验的原始输入为参照,报告 SSIM、码率和解码帧数。

计时运行期间请避免录屏或同时监控,这些操作可能改变测量结果。不要将下载的视频素材和生成的原始文件加入 Git。

查看仪表板和数据

通过 GitHub 的原始文件下载功能下载 website/index.html,或在桌面浏览器中打开本地检出目录中的该文件。仪表板支持离线使用、英中切换和 16:9 演示模式。竞速动画回放的是实测耗时中位数,并非实时编码。

限制与署名

这组三次运行的结果仅覆盖一个动画片段,不能据此确定摄像头视频、监控工作负载、视频采集、HEVC 解码、AV1 的性能或整机功耗。CPU 频率、散热、固件、内核和软件版本均可能影响复现结果。SSIM 是计算得到的相似度指标,并非人工视觉评估。

测试源为 Blender Foundation(2008)的 Big Buck Bunny,Sunflower 4K 再发行版,按 CC BY 3.0 许可分发。准备脚本会下载 Blender 原始 ZIP;基准测试仓库不包含影片。制作衍生演示或视频时,请保留影片署名。