Jak przesyłać strumieniowo raspivid do Linuksa i OSX za pomocą GStreamer, VLC lub Netcat?

Odpowiedzi:

32
  • Netcat (nc) wydaje się być tym, który ma najmniejsze opóźnienie.
  • Z mojego doświadczenia wynika, że ​​VLC ma największe opóźnienie. Z drugiej strony istnieje klient VLC na Androida, co jest wygodne.

  • <IP-OF-THE-CLIENT> to adres IP komputera, który powinien odbierać strumień wideo.

  • <IP-OF-THE-RPI> jest adresem IP Raspberry Pi.

Korzystanie z Netcat:

Na kliencie

(Uruchom polecenie najpierw na kliencie, a następnie na serwerze (RPi)).

Linux

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

OS X

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

Na RPi

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

Za pomocą GStreamer:

Na kliencie

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

Na 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

Korzystanie z VLC

Na kliencie

Klient może być nawet na telefonie komórkowym (próbowałem na Androidzie).

Po prostu otwórz z sieci w kliencie VLC:

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

Na 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
źródło
Wersja Pi nie działa. Mam na myśli, że to nie działa tak, jak powinno. Klient ip?
Flash Thunder,
1
Zgadzam się, netcat ma najniższe opóźnienia. Ale dlaczego używasz 200 fps? Mój strumień ma 30 klatek na sekundę, ale ustawienie mplayera na 60 wygląda najlepiej, nie wiem dlaczego. Jeśli ustawię mplayera na 30, to doda to 1-2 sekundowe opóźnienie
Elliott B
28

lepszy:

na rpi:

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

w Twoim komputerze:

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

obsługuje ponowne łączenie

soja
źródło
3
Na raspberry pi musiałem użyć -pparametru, aby ustawić port:raspivid -t 0 -w 1280 -h 720 -hf -ih -fps 20 -o - | nc -k -l -p 2222
johnboiles
3
Dzięki za mplayerpolecenie. Działa również z nowszymi, raspividktóre mogą przesyłać strumieniowo do TCP bez użycia netcat, w ten sposób: raspivid -fps 20 -w 1280 -h 720 -t 0 -l -o tcp://0.0.0.0:2222- a polecenie odtwarzania jest takie samo. Wciąż szukam poprawnego adresu URL do przesyłania strumieniowego VLC. To było coś w styluh264+tcp://example.org:2222
Tomasz Gandor,
1
Polecenie to tcp / h264: //example.org: 2222. Zastanawiam się, jak grać w tego typu strumień na Androidzie. Telefony komórkowe mają takie słabe aplikacje.
Valentin Radu,
Na MacOS: brew install mplayer.
creimers