Como transmitir raspivid para Linux e OSX usando GStreamer, VLC ou Netcat?

Respostas:

32
  • O Netcat (nc) parece ser o que apresenta o menor atraso.
  • Na minha experiência, o VLC tem o maior atraso. Por outro lado, há um cliente VLC para Android, o que é conveniente.

  • <IP-OF-THE-CLIENT> é o IP do computador que deve receber o fluxo de vídeo.

  • <IP-OF-THE-RPI> é o IP do Raspberry Pi.

Usando o Netcat:

No cliente

(Execute o comando no cliente primeiro e depois no servidor (RPi)).

Linux

nc -l 2222 | mplayer -fps 200 -demuxer h264es -

OS X

nc -l 2222 | mplayer -fps 200 -demuxer h264es -

No RPi

/opt/vc/bin/raspivid -t 0 -w 300 -h 300 -hf -fps 20 -o - | nc <IP-OF-THE-CLIENT> 2222

Usando o GStreamer:

No cliente

Linux

gst-launch-1.0 -v tcpclientsrc host=<IP-OF-THE-RPI> port=5000  ! gdpdepay !  rtph264depay ! avdec_h264 ! videoconvert ! autovideosink sync=false

OS X

gst-launch-1.0 -v tcpclientsrc host=<IP-OF-THE-RPI> port=5000  ! gdpdepay !  rtph264depay ! avdec_h264 ! videoconvert ! osxvideosink sync=false

No RPi

/opt/vc/bin/raspivid -t 0 -hf -fps 20 -w 300 -h 300 -o - | gst-launch-1.0 fdsrc ! h264parse ! rtph264pay config-interval=1 pt=96 ! gdppay ! tcpserversink host=<IP-OF-THE-RPI> port=5000

Usando o VLC

No cliente

O cliente pode até estar em um telefone celular (tentei no Android).

Simplesmente abra da rede no cliente VLC:

http://<IP-OF-THE-RPI>:8090

No RPi

/opt/vc/bin/raspivid -o - -t 0 -hf -w 640 -h 360 -fps 25|cvlc -vvv stream:///dev/stdin --sout '#standard{access=http,mux=ts,dst=:8090}' :demux=h264
JonasVautherin
fonte
A versão Pi não funciona. Quero dizer, não funciona como deveria. IP do cliente?
Flash Thunder
1
Eu concordo, o netcat tem a menor latência. Mas por que você usa 200fps? Meu fluxo é de 30fps, mas definir mplayer para 60 parece melhor, não sei por quê. Se eu definir mplayer a 30, em seguida, ele adiciona 1-2 segundos latência
Elliott B
28

Melhor:

no rpi:

raspivid -t 0 -w 1280 -h 720 -hf -ih -fps 20 -o - | nc -k -l 2222

no seu computador:

mplayer -fps 200 -demuxer h264es ffmpeg: // tcp: //10.0.1.3: 2222

suporta reconectar

soyer
fonte
3
No raspberry pi, tive que usar o -pparâmetro para definir a porta:raspivid -t 0 -w 1280 -h 720 -hf -ih -fps 20 -o - | nc -k -l -p 2222
johnboiles
3
Obrigado pelo mplayercomando. Também funciona com o mais novo, raspividque pode transmitir para o TCP sem usar netcat, assim: raspivid -fps 20 -w 1280 -h 720 -t 0 -l -o tcp://0.0.0.0:2222- e o comando play é o mesmo. Ainda estou procurando o URL correto para o streaming VLC. Era algo comoh264+tcp://example.org:2222
Tomasz Gandor
1
O comando é tcp / h264: //example.org: 2222. Gostaria de saber como reproduzir esse tipo de fluxo no Android. Os telefones celulares têm aplicativos tão ruins.
Valentin Radu
No MacOS: brew install mplayer.
creimers 31/01