YouTube で見る · インタラクティブダッシュボードを開く · ソースリポジトリ
本プロジェクトでは、Raspberry Pi 5 の FFmpeg/libx264、Seeed reComputer RK3588 Devkit の FFmpeg/libx264、RK3588 上で GStreamer を介して使用する Rockchip MPP ハードウェアエンコードの 3 経路を比較します。両ボードとも RAM は 16 GB です。
ソースリポジトリには再現用スクリプト、各実行の CSV データ、単体で動作する英語・中国語対応の HTML ダッシュボードが含まれます。このテストにおけるスループット、プロセスの CPU 使用率、出力品質のトレードオフを確認できます。
測定結果
以下の値はリポジトリの集計 CSVに基づきます。RAM に読み込んだ同一の 300 フレームの入力を使い、各エンコード経路を 3 回実行しました。
| 指標 | Raspberry Pi 5: libx264 | RK3588: libx264 | RK3588: MPP H.264 |
|---|---|---|---|
| 経過時間の中央値 | 24.64 s | 20.04 s | 10.37 s |
| スループット(300 / 経過時間の中央値) | 12.18 fps | 14.97 fps | 28.93 fps |
| プロセス CPU 使用率の中央値 | 327% | 357% | 54% |
| 非圧縮ソースに対する SSIM All | 0.995376 | 0.995378 | 0.991389 |
| 代表的な出力ビットレート | 10.21 Mbps | 10.21 Mbps | 9.70 Mbps |
この構成では、RK3588 MPP のスループットは Pi 5 の libx264 の約 2.38 倍でした。MPP の各実行は 10.93、10.37、9.86 秒で、3 回中 2 回が入力クリップの長さである 10 秒を超えました。
テスト条件
| 項目 | 構成 |
|---|---|
| Raspberry Pi 5 | 16 GB; Debian 13 Trixie; FFmpeg 7.1.5 |
| reComputer RK3588 Devkit | 16 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 のハードウェアエンコードには、gst-launch-1.0、mpph264enc エレメント、正常に動作する MPP ドライバーを含む適切な Rockchip/Seeed GStreamer 環境をインストールしてください。付属の MPP スクリプトは sudo を呼び出します。測定に使ったシステムイメージでは /dev/mpp_service へのアクセスに権限昇格が必要でした。
生の入力は 3,732,480,000 バイト(3.48 GiB)を占め、RAM にもコピーを保持します。上流プロジェクトでは 16 GB RAM と /dev/shm の約 4 GB の空き容量を推奨しています。ソース ZIP、展開後の MP4、生の入力、エンコード出力用のディスク容量も確保してください。
両ボードで同一の入力を準備
各デバイスで個別にチェックアウトしたディレクトリから実行してください。固定したリビジョンは上記の結果に対応しています。
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 は次のとおりです。
d1e3403d6886a5472c7261dfe07a4149b941d1d7bdfa92d46f181dff381f5fd7検証に失敗した場合は中止してください。ソースの抽出は準備作業であり、エンコード時間に含めてはいけません。
対応するエンコード経路を実行
Raspberry Pi 5 上:
bash scripts/01_cpu_encode.sh pi5
bash scripts/03_measure_quality.sh output/cpu_pi5_run2.mp4RK3588 上:
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各エンコードスクリプトは 3 回実行します。出力は output/、時間と品質のログは logs/ に保存されます。終了ステータスと出力フレーム数を確認してください。各出力は 300 フレームである必要があります。品質スクリプトは検証済みの生の入力を基準に、SSIM、ビットレート、デコードしたフレーム数を報告します。
計測中の画面録画や同時監視は測定値に影響するため避けてください。ダウンロードした映像や生成した生ファイルを Git に追加しないでください。
ダッシュボードとデータの確認
GitHub の raw ファイルダウンロード機能で website/index.html をダウンロードするか、ローカルのチェックアウトからデスクトップブラウザーで開いてください。ダッシュボードはオフラインで動作し、英語と中国語の切り替えや 16:9 のプレゼンテーションモードに対応しています。レースアニメーションは測定した所要時間の中央値を再生するもので、実際にエンコードしているわけではありません。
制約とクレジット
この 3 回の実行結果は単一のアニメーションクリップのみを対象としています。カメラ映像、監視ワークロード、動画キャプチャー、HEVC デコード、AV1 の性能や機器全体の消費電力を示すものではありません。CPU 周波数、冷却、ファームウェア、カーネル、ソフトウェアのバージョンにより再現結果は変わり得ます。SSIM は計算による類似度指標であり、人による視覚評価ではありません。
テストソースは Blender Foundation(2008)の Big Buck Bunny、Sunflower 4K 再リリース版で、CC BY 3.0 に基づき配布されています。準備スクリプトは Blender の元の ZIP をダウンロードします。ベンチマークリポジトリに映画本体は含まれません。派生するプレゼンテーションや動画では映画のクレジットを保持してください。