🛠 Caméra MIPI CSI et encodage H.264 matériel via GStreamer
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
- 1 BeagleBone AI-64 avec une image TI/BeagleBoard incluant les overlays caméra
- 1 module caméra CSI compatible (classe IMX219 ou équivalent, nappe FFC 4 lanes)
- Attention : la nappe CSI se branche contact cuivre vers le connecteur ; carte ALIMENTÉE ÉTEINTE pour l'insertion
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
- Copier le pipeline sans adapter les nœuds : les entités v4l2 dépendent de l'image et des overlays ; media-ctl -p est obligatoire pour cartographier son propre système.
- Capteur non lié : sans l'overlay DT du capteur, aucun /dev/video de capture n'apparaît — vérifier dmesg pour le probe du driver I2C du capteur.
- Image mainline pure : la chaîne CSI/VPAC/codec relève en pratique de la pile downstream TI ; sous mainline on se limite à de la capture basique.
- Oublier io-mode=5 (DMABUF) : sans négociation mmap-plane cohérente, le pipeline échoue ou rame.
- Remplir les 16 Go d'eMMC avec des enregistrements : écrire sur microSD ou disque externe.
Autres tutoriels pour cette carte
- Flasher l'image officielle et démarrer la BeagleBone AI-64
- Faire clignoter une LED sur la broche P8_03 avec libgpiod
- Surveiller la température et l'alimentation du TDA4VM
- Réseau : Ethernet Gigabit unique et module Wi-Fi en M.2 E-key
- Remoteproc : inventorier et démarrer les co-processeurs R5F et C66x
- Inférence de réseau de neurones sur le C7x+MMA avec edgeai-tidl-tools
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash