🛠 Caméra MIPI CSI et encodage H.264 matériel via GStreamer

BeagleBone AI-64 (TI TDA4VM / J721E) · intermediaire · Schéma : IMG-beaglebone-ai64-intermediaire-2-camera-csi-encodage-h264-materiel.svg — BeagleBone AI-64 avec un module caméra relié par nappe FFC au connecteur CSI0, pipeline annoté CSI → VPAC → VPE → encodeur H.264 → fichier MP4.

Objetivos

Aprovechar las dos entradas de cámara MIPI CSI de 4 lanes de la AI-64 y la cadena de procesamiento de imagen del TDA4VM (captura VPAC/CSI2RX, re-muestreo VPE/M2M, codificador H.264 por hardware) para grabar un vídeo 1080p sin cargar los Cortex-A72. Este es el caso de uso de «cámara inteligente» para el cual existe la placa.

Hardware

Código completo

sudo apt install v4l-utils gstreamer1.0-tools gstreamer1.0-plugins-bad
v4l2-ctl --list-devices        # lister CSI, M2M/VPE et encodeurs
media-ctl -p | grep -E "entity|pad"   # cartographier CSI2RX / VPAC / VPE
#!/bin/sh
# record.sh — 5 s de 1080p30 encodées par le SoC (pas par le CPU)
# Les nœuds (/dev/video-rpi-cam0, /dev/video3...) dépendent de l'image et
# des overlays caméra : les confirmer avec media-ctl -p avant de lancer.
gst-launch-1.0 -e \
  v4l2src device=/dev/video-rpi-cam0 num-buffers=150 io-mode=5 ! \
  "video/x-bayer,format=nv12,width=1920,height=1080,framerate=30/1" ! \
  vpe src-io-type=mplane sink-io-type=mplane process-only=1 ! \
  v4l2convert ! video/x-raw,format=UYVY ! \
  vpe src-io-type=mplane sink-io-type=mplane process-only=1 ! \
  v4l2h264enc extra-controls="controls,video_extend=1,compression=1" ! \
  h264parse ! mp4mux ! filesink location=out.mp4

Verificación esperada

El archivo out.mp4 de 150 imágenes (5 s a 30 fps) se reproduce en un reproductor de vídeo. Durante la grabación, htop muestra los Cortex-A72 casi inactivos: la captura, la conversión y la codificación se ejecutan en los bloques de hardware VPAC/VPE/codificador.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales