Commit Graph

34 Commits

Author SHA1 Message Date
009d899d00 Modifier FPS vidéo drone 2592x1944 de 1 à 4fps
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FHftskg5H9cToa3WLVmZfP
2026-07-20 20:29:01 +02:00
8e2be95484 Modifier résolution vidéo drone à 2592x1944@1fps (pleine résolution capteur)
- WIDTH: 1920 → 2592
- HEIGHT: 1080 → 1944
- FPS: 10 → 1
- Bitrate stable 4500 kbps

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FHftskg5H9cToa3WLVmZfP
2026-07-20 20:26:13 +02:00
6109923e3a Modifier résolution vidéo drone à 1920x1080@10fps
- WIDTH: 1280 → 1920
- HEIGHT: 720 → 1080
- FPS: 15 → 10
- Bitrate stable 4500 kbps

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FHftskg5H9cToa3WLVmZfP
2026-07-20 20:16:22 +02:00
930697cd1e Définir mcs_index = 0 (valeur par défaut) dans tous les profils radio 2026-07-20 19:43:35 +02:00
782bf00143 Ajouter profils radio versionés (5GHz + 2.4GHz, bandwidth=40 sur les deux) 2026-07-20 19:23:03 +02:00
be5af62ef0 Nettoyer bandwidth=40 inutile de [common], déjà présent dans [drone_video] 2026-07-20 15:49:58 +02:00
5edb7eb36f Ajouter config de référence wifibroadcast_drone.cfg pour suivi git 2026-07-20 15:42:30 +02:00
d74fd51599 P2: résolution 1280x720 2026-07-19 15:00:35 +02:00
64cd7a819e P2: retour résolution 640x480 pour test 2026-07-19 14:46:56 +02:00
336b6bca92 P2: résolution 1280x720 (défaut validé, ~14% CPU en hw) 2026-07-19 13:36:34 +02:00
8c0eea8a1a P2: JETSON_HOST vers 127.0.0.1:5602 (tunnel local) 2026-07-19 12:57:48 +02:00
a8f8011540 P2: repasse ENCODER=hw, BITRATE_KBPS=4500 pour valider extra-controls v4l2h264enc
640x480@15 conservé comme charge de test contrôlée.
2026-07-19 11:53:33 +02:00
6d1315f346 fix: contrôle explicite bitrate/keyframe/SPS-PPS pour v4l2h264enc
Sans extra-controls, v4l2h264enc utilisait ses valeurs par défaut
(bitrate non maîtrisé, pas de repeat_sequence_header), ce qui pouvait
désynchroniser le décodeur côté Jetson en cas de perte de paquet.
2026-07-19 11:50:13 +02:00
c570233d9d P2 diagnostic: JETSON_HOST vers tunnel WFB-NG (10.5.0.1) au lieu de Mycelium injoignable en hotspot local 2026-07-18 20:30:28 +02:00
281a7d13b9 P2 diagnostic: bascule vers encodeur logiciel borné (test contention radio) 2026-07-18 19:59:57 +02:00
faa1f0d4a2 chore: retire CLAUDE.md du suivi git
CLAUDE.md reste local (ajouté au .gitignore), plus versionné.
2026-07-18 14:51:11 +02:00
13782fc354 Supprimer CLAUDE.md 2026-07-18 12:33:03 +00:00
bd8a7f282e docs: ajoute procédure de mise à jour du Pi Zero via Jetson 2026-07-18 14:29:03 +02:00
c30bc2e801 fix: decouple sideband destination from video (SIDEBAND_HOST via tunnel WFB-NG) 2026-07-18 13:58:07 +02:00
cdd3fa6965 fix: sideband UDP — socket AF_INET6 automatique si JETSON_HOST est IPv6
Le socket était créé en AF_INET, bloquant tout envoi vers une adresse
Mycelium IPv6. _udp_sock() détecte le type d'adresse via ipaddress et
choisit AF_INET6 (4-tuple) ou AF_INET selon JETSON_HOST.
Gère aussi le changement de host à chaud via POST /settings.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-01 16:49:23 +02:00
ec6db004a9 fix: JETSON_HOST IPv6 Mycelium, ajout .env.prod 2026-07-01 16:41:10 +02:00
b6cca04df3 feat: H.264 level 5 pour >1080p + validation résolution OV5647 max 2592x1944
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-09 18:48:19 +02:00
accf1ec793 fix: réinitialise la queue hw→sw à chaque restart_with via /settings
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-09 18:45:54 +02:00
9d026fa986 feat: install.sh + section Installation dans CLAUDE.md
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-09 18:21:46 +02:00
920e0a9871 fix: pipeline hw — supprime video-bitrate/extra-controls invalides sur v4l2h264enc
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-09 18:18:40 +02:00
ad8a8e81a7 feat: sideband payload complet — cpu_pct, throttled, bitrate_kbps, uptime_s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-09 17:39:47 +02:00
eb88f43ae1 fix: supprime textoverlay (rc=255 incompatibilité pixel) + queue avant udpsink
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-09 17:13:26 +02:00
6b696f25d1 config: 720p@15fps 1500kbps (dev) — baisse charge Pi Zero
1920x1080@10fps → 1280x720@15fps, bitrate 2500→1500 kbps.
Réduit la charge CPU x264enc en fallback sw, fluidité améliorée.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-09 17:05:33 +02:00
a6cea5619a fix: videoconvert wrapping textoverlay dans pipeline hw
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>
2026-06-09 16:59:10 +02:00
636f6fee11 fix: pipeline hw — v4l2convert NV12→I420 pour textoverlay
textoverlay requiert I420 ou YUY2, pas NV12 directement issu de libcamerasrc.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-09 12:00:22 +02:00
ca4aa13d1d feat: 1080p@10fps + sideband UDP 5602 + textoverlay
- Pipeline 1920x1080@10fps avec level=(string)4 (auto via _h264_level)
- Sideband thread UDP port 5602 : JSON {ts,width,height,fps,encoder,temp_c} @ 1 Hz
- textoverlay "temp=XX.XC  10fps  1920x1080" haut-gauche avant encodeur
- .env.dev : WIDTH=1920 HEIGHT=1080 FPS=10 BITRATE_KBPS=2500
- _load_env() : .env base + .env.dev override
- Fallback hw→sw conservé, level auto 3.2/4 selon résolution

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-09 11:45:35 +02:00
e2ceeded8a feat: camera_server v2 — encodeur hw v4l2h264enc + fallback sw
- 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>
2026-06-09 10:52:14 +02:00
9221a1a2b9 feat: camera_server.py — MJPEG port 5000 + RTP H264 vers Jetson
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>
2026-06-09 10:10:54 +02:00
3af7793f76 init: CLAUDE.md wireclaw-pizero 2026-06-09 10:07:58 +02:00