Ver en YouTube · Abrir el panel interactivo · Repositorio de código fuente
Este proyecto compara tres rutas de codificación de vídeo: FFmpeg/libx264 en Raspberry Pi 5, FFmpeg/libx264 en Seeed reComputer RK3588 Devkit y GStreamer con codificación por hardware Rockchip MPP en RK3588. Ambas placas tienen 16 GB de RAM.
El repositorio de código fuente incluye scripts de reproducción, datos CSV de cada ejecución y un panel HTML independiente en inglés y chino. Permite examinar los compromisos entre rendimiento, uso de CPU del proceso y calidad de salida en esta prueba concreta.
Resultados medidos
Los siguientes valores proceden del CSV de resumen del repositorio. Cada ruta de codificación se ejecutó tres veces con la misma entrada de 300 fotogramas cargada en RAM.
| Métrica | Raspberry Pi 5: libx264 | RK3588: libx264 | RK3588: MPP H.264 |
|---|---|---|---|
| Mediana del tiempo transcurrido | 24.64 s | 20.04 s | 10.37 s |
| Rendimiento (300 / mediana del tiempo transcurrido) | 12.18 fps | 14.97 fps | 28.93 fps |
| Mediana del uso de CPU del proceso | 327% | 357% | 54% |
| SSIM All respecto al origen sin comprimir | 0.995376 | 0.995378 | 0.991389 |
| Tasa de bits de salida representativa | 10.21 Mbps | 10.21 Mbps | 9.70 Mbps |
En esta configuración, RK3588 MPP alcanzó aproximadamente 2.38 veces el rendimiento de libx264 en Pi 5. Las ejecuciones individuales de MPP tardaron 10.93, 10.37 y 9.86 segundos: dos de las tres superaron los 10 segundos de duración del clip de entrada.
Condiciones de prueba
| Elemento | Configuración |
|---|---|
| Raspberry Pi 5 | 16 GB; Debian 13 Trixie; FFmpeg 7.1.5 |
| reComputer RK3588 Devkit | 16 GB; Armbian 26.8.7 (Ubuntu 26.04); kernel del fabricante 6.1.172; Rockchip MPP 1.5.0-1 complemento |
| Entrada | Big Buck Bunny Sunflower; 3840 × 2160; 30 fps; 300 fotogramas; NV12 |
| Selección del clip | 10 segundos a partir de 00:01:00 |
| Ubicación de entrada cronometrada | /dev/shm/rkpi_real_4k_10s.nv12 |
| Ajustes de codificación objetivo | H.264; 10 Mbps; GOP 60 |
| Ajustes de libx264 | -preset veryfast -threads 4 -maxrate 10M -bufsize 20M |
| Ajustes de MPP | mpph264enc rc-mode=cbr bps=10000000 gop=60 |
MPP es la ruta específica de Rockchip y se utiliza únicamente en RK3588. La ruta de Pi 5 emplea aquí codificación por software.
Reproducir el benchmark
Requisitos previos
Utiliza un entorno Linux de tipo Debian/Ubuntu con git, bash, wget, unzip, sha256sum, ffmpeg, ffprobe y /usr/bin/time. El script de preparación también utiliza herramientas estándar como stat, df y cp. FFmpeg debe incluir el codificador libx264 y el filtro SSIM.
Para la codificación por hardware en RK3588, instala el entorno GStreamer apropiado de Rockchip/Seeed con gst-launch-1.0, el elemento mpph264enc y controladores MPP funcionales. El script MPP incluido invoca sudo; la imagen del sistema utilizada en la medición requería privilegios elevados para acceder a /dev/mpp_service.
La entrada sin procesar ocupa 3,732,480,000 bytes (3.48 GiB), con otra copia en RAM. El proyecto original recomienda 16 GB de RAM y unos 4 GB libres en /dev/shm. Reserva también espacio en disco para el ZIP de origen, el MP4 extraído, la entrada sin procesar y las salidas codificadas.
Preparar una entrada idéntica en ambas placas
Ejecuta los comandos desde una copia independiente del repositorio en cada dispositivo. La revisión fijada corresponde a los resultados documentados arriba.
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.shEl script de preparación descarga el ZIP de origen de Blender, extrae el clip, comprueba su tamaño en bytes y su SHA-256 y copia la entrada NV12 verificada a /dev/shm. El SHA-256 esperado de la entrada sin procesar es:
d1e3403d6886a5472c7261dfe07a4149b941d1d7bdfa92d46f181dff381f5fd7Detén el proceso si falla la verificación. La extracción del material de origen es una tarea de preparación y no debe contabilizarse como tiempo de codificación.
Ejecutar la ruta de codificación correspondiente
En Raspberry Pi 5:
bash scripts/01_cpu_encode.sh pi5
bash scripts/03_measure_quality.sh output/cpu_pi5_run2.mp4En RK3588:
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.mp4Cada script de codificación realiza tres ejecuciones. Las salidas se guardan en output/ y los registros de tiempo y calidad en logs/. Comprueba el estado de salida y el número de fotogramas: cada salida debe contener 300 fotogramas. El script de calidad informa del SSIM, la tasa de bits y el número de fotogramas decodificados respecto a la entrada sin procesar verificada.
Evita grabar la pantalla o monitorizar simultáneamente durante las ejecuciones cronometradas, ya que puede alterar las mediciones. No añadas a Git los vídeos descargados ni los archivos sin procesar generados.
Explorar el panel y los datos
Descarga website/index.html mediante la descarga del archivo raw de GitHub, o ábrelo desde tu copia local en un navegador de escritorio. El panel funciona sin conexión, permite alternar entre inglés y chino e incluye un modo de presentación 16:9. Su animación de carrera reproduce las medianas de tiempo medidas; no realiza codificación en directo.
Limitaciones y atribución
Estos resultados de tres ejecuciones abarcan un único clip de animación. No determinan el rendimiento con imágenes de cámaras, cargas de videovigilancia, captura de vídeo, decodificación HEVC o AV1, ni el consumo eléctrico del dispositivo completo. La frecuencia de CPU, refrigeración, firmware, kernel y versiones del software pueden afectar a la reproducción. SSIM es una métrica de similitud calculada, no una evaluación visual humana.
El material de prueba es Big Buck Bunny, Blender Foundation (2008), reedición Sunflower 4K, distribuido bajo CC BY 3.0. El script de preparación descarga el ZIP original de Blender; la película no está incluida en el repositorio del benchmark. Conserva la atribución de la película al crear presentaciones o vídeos derivados.