Quale soluzione di streaming per Picam ha il ritardo più piccolo?


9

Questo post mostra come eseguire lo streaming utilizzando VLC. Funziona bene ed è semplice, ma mi dà un secondo ritardo. Questo post usa GStreamer e ha un ritardo di 0,3 secondi; Vorrei di meno.

È possibile utilizzare il chip grafico Raspberry Pi per accelerare la codifica?


Non è ancora possibile. Il ritardo di 0,3 ms è molto buono e non migliorerai (per ora) a causa della mancanza di V2L. Forse questo aiuterà
Piotr Kula,

@ppumkin Penso che l'OP abbia detto che il ritardo era di 0,3 secondi, non millisecondi. Inoltre, intendi V4L?
Syb0rg,

Sì 3ms stavo pensando. Driver Video4Linux? O si chiama qualcos'altro. Sai. Il driver nativo.
Piotr Kula,

@ppumkin Ahh, allora ti sbaglieresti. I driver V4L2 sono stati inclusi in NOOBS v1.3.3 .
Syb0rg,

Risposte:


9

Con Ubuntu 14.10 e Gstreamer raggiungo una latenza da 100 a 116 ms con 1280 x 720 a 60Hz.

Grazie a @Antonvh che mi mette sulla strada giusta. Riporto qui la soluzione per quest'ultimo riferimento.

Per eseguire lo streaming dal Pi:

raspivid -t 0 -b 2000000  -fps 60 -w 1280 -h 720 -o - \
  | gst-launch-1.0 -e -vvv fdsrc ! h264parse ! rtph264pay pt=96 config-interval=5 \ 
  ! udpsink host=10.42.0.1 port=5001

Per riceverlo sul tuo computer con gst-0.10 e inviarlo a un dispositivo virtuale v4l2 (in effetti hai bisogno di v4l2loopback ):

gst-launch -v udpsrc port=5001 ! application/x-rtp, payload=96 ! rtph264depay \ 
! ffdec_h264 ! ffmpegcolorspace ! v4l2sink device=/dev/video1

Quindi è possibile aprire il dispositivo /dev/video1in qualsiasi software che supporti l'acquisizione v4l2.

Per una soluzione gst-1.0 (v4l2loopback non funziona con gst-1.0), ti faccio vedere il post sul blog di Antonvh .


4

Ho raggiunto un ritardo di 200 ms! Il trucco: invia meno fotogrammi dal Pi di quanto leggi sul lato remoto, questo assicura che il buffer rimanga vuoto.

Ecco una foto che ho fatto dell'RPi che filmava un cronometro. Mostra la differenza di tempo.

Questa è la ricetta che uso. Per prima cosa sul laptop (Mac) fai questo:

nc -l 5001 | mplayer -fps 24 -cache 1024 -

quindi su RPI avvia lo streaming:

raspivid -t 999999 -w 1280 -h 720 -fps 20 -o - | nc 192.168.178.22 5001

Assicurati che:

  • Installa prima mplayer. Solo il metodo Homebrew ha funzionato per me. Il download regolare è stato interrotto.
  • Cambia il numero IP sopra con il numero del tuo laptop.

Questo è un trucco intelligente! Mi chiedo se funzioni anche per il nuovo driver UV4L
Piotr Kula,

Il problema con questa soluzione è che introduce molta balbuzie dal lato della riproduzione. Mi chiedevo se hai trovato una soluzione a questo.
9a3eedi

1

Uso questa ricetta video: http://archpi.dabase.com/#sending-and-receiving-pi-camera-video-over-the-network

Hai provato https://github.com/thaytan/gst-rpicamsrc ? Questo dovrebbe essere leggermente più snello. Tbh, non posso preoccuparmi di provarlo.

Il ritardo di 0,3 secondi è dannatamente buono.


1
Grazie per i collegamenti! Penso di avere un ritardo inferiore a 0,3 secondi, devo ancora documentare la soluzione e misurarla con precisione. Pubblicheremo presto. Se le mie misurazioni dimostrano che è superiore a 0,3, proverò l'altra ricetta.
Antonvh

@Antonvh Come vanno le ricerche / misurazioni? Questa risposta ti sta dando risultati migliori?
RPiAwesomeness,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.