🛠 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.

Objectifs

Exploiter les deux entrées caméra 4 lanes MIPI CSI de l'AI-64 et la chaîne de traitement image du TDA4VM (capture VPAC/CSI2RX, re-échantillonnage VPE/M2M, encodeur H.264 matériel) pour enregistrer une vidéo 1080p sans charger les Cortex-A72. C'est le cas d'usage « caméra intelligente » pour lequel la carte existe.

Matériel

Code complet

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

Vérification attendue

Le fichier out.mp4 de 150 images (5 s à 30 fps) se lit dans un lecteur vidéo. Pendant l'enregistrement, htop montre les Cortex-A72 quasi inactifs : la capture, la conversion et l'encodage tournent sur les blocs matériels VPAC/VPE/encodeur.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels