Per prima cosa, per avere uno stream dal drone si crea un server RTMP tramite il docker di Mediamtx mettendo i seguenti files nella stessa cartella
docker-compose.yml
==================================
version: "3.8"
services:
mediamtx:
image: bluenviron/mediamtx:latest
container_name: mediamtx
restart: unless-stopped
ports:
- "8554:8554" # RTSP
- "8888:8888" # HTTP / WebRTC
- "8889:8889" # HTTPS
- "1935:1935" # RTMP
volumes:
- ./mediamtx.yml:/mediamtx.yml:ro
==================================
mediamtx.yml
==================================
# Porte
rtmpAddress: :1935
rtspAddress: :8554
hlsAddress: :8888
webrtcAddress: :8889
apiAddress: :9997
# Configurazione HLS (bassa latenza)
hlsSegmentDuration: 1s
hlsPartDuration: 200ms
hlsSegmentMaxSize: 50MB
# Path dello stream
paths:
mystream:
# Permessi semplificati (versioni recenti)
source: publisher
# Lancia ffmpeg automaticamente quando arriva uno stream
runOnReady: >
ffmpeg -i rtmp://localhost:1935/mystream
-vf fps=1 -q:v 2 /tmp/frames/frame_%04d.jpg
runOnReadyRestart: yes
==================================
e lanciando
docker run -d --name mediamtx -p 0.0.0.0:1935:1935 -p 8554:8554 -p 8888:8888 bluenviron/mediamtx:latest
Lo stream si puo' visualizzare con FFMpeg direttamente sulla macchina docker
ffplay -fflags nobuffer \
-flags low_delay \
-framedrop \
-sync ext \
rtmp://localhost:1935/luca
e si possono salvare anche i frame ad intervalli prefissati
ffmpeg -i rtmp://localhost:1935/live/mystream \ -vf fps=1 \ -q:v 2 \ /tmp/frames/frame_%04d.jpg
per semplificare lo sviluppo si puo' usare un cellulare al posto del drone usando la app RMTP Streamer
si va nel pulsante Server e si impostano i parametri del docker serversi torna indietro e si preme Go Stream in basso a destraaltrimenti da DJI Flight queste sono le schermate per impostare lo stream
a questo punto puo' essere interessante uno script che legga il flusso e salva un fotogramma quando c'e' una differenza compresa tra il 65% ed il 75% dal precedente salvato in modo da poi dare in pasto a Opendronemap per la ricostruzione
Per procedere da linea di comando alla creazione di un modello 3d si puo' usare il docker di opendronemap (le impostazioni sono volutamente per la creazione di un modello speditivo da usare in campagna...per il perfezionamento si puo' fare in ufficio(
docker run -ti --rm \
-v /home/luca/Downloads/immagini:/datasets/immagini \
opendronemap/odm \
--project-path /immagini \
--pc-quality low \
--pc-sample 0.01 \
--resize-to 2000 \
--feature-quality low \
--skip-orthophoto








