textoverlay ne digère pas I420 directement depuis v4l2convert.
Ajout de videoconvert avant et après textoverlay, puis
v4l2convert ! video/x-raw,format=I420 juste avant v4l2h264enc.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Suppression du bloc MJPEG (double pipeline impossible sur Pi Zero 2W,
interdit par CLAUDE.md : Flask = health + settings uniquement)
- Encodeur par défaut : v4l2h264enc hardware (/dev/video11, bcm2835-codec)
attend ~40% CPU vs 80-90% avec x264enc
- Fallback automatique vers x264enc si v4l2h264enc échoue au démarrage
- Correction pipeline split : shlex.split() remplace .split() (bug caps GStreamer)
- Lecture stderr gst-launch en temps réel (thread daemon)
- GstManager : restart propre via SIGTERM sur le process GStreamer
- Signal SIGTERM/SIGINT : arrêt propre du process GStreamer
- /settings POST : changement à chaud de jetson_host, bitrate, encoder, etc.
- CLAUDE.md : correction "pas de GPU" → VideoCore IV + pipelines hw/sw documentés
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Flux MJPEG local via Flask/OpenCV (libcamerasrc → appsink).
Flux RTP H264 simultané via subprocess gst-launch-1.0 en thread daemon
avec redémarrage automatique sur erreur.
Endpoint /health pour supervision.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>