Как для потоковой передачи raspivid на Linux и OSX с помощью GStreamer, VLC или Netcat?

Ответы:

32
  • Netcat (nc), похоже, имеет наименьшую задержку.
  • По моему опыту, VLC имеет самую большую задержку. С другой стороны, есть VLC-клиент для Android, что удобно.

  • <IP-OF-THE-CLIENT> IP-адрес компьютера, который должен принимать видеопоток.

  • <IP-OF-THE-RPI> это IP Raspberry Pi.

Использование Netcat:

На клиенте

(Сначала запустите команду на клиенте, а затем на сервере (RPi)).

Linux

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

OS X

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

На RPi

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

Использование GStreamer:

На клиенте

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

На 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

Использование VLC

На клиенте

Клиент может даже быть на мобильном телефоне (я пробовал на Android).

Просто откройте из сети в VLC-клиенте:

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

На 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
источник
Пи версия не работает. Я имею в виду, что это не работает так, как должно. Клиентский IP?
Вспышка грома
1
Я согласен, у netcat самая низкая задержка. Но почему вы используете 200fps? Мой поток 30 кадров в секунду, но установка mplayer на 60 выглядит лучше, я не знаю почему. Если я установлю mplayer на 30, то добавится задержка 1-2 секунды
Elliott B
28

лучше:

на RPI:

распивид -t 0 -w 1280 -h 720 -hf -ih -fps 20 -o - | нк -к-л 2222

на твоем компьютере:

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

поддерживает переподключение

Soyer
источник
3
На Raspberry Pi мне пришлось использовать -pпараметр, чтобы установить порт:raspivid -t 0 -w 1280 -h 720 -hf -ih -fps 20 -o - | nc -k -l -p 2222
johnboiles
3
Спасибо за mplayerкоманду. Он также работает с более новой версией, raspividкоторая может передавать по TCP без использования netcat, например: raspivid -fps 20 -w 1280 -h 720 -t 0 -l -o tcp://0.0.0.0:2222- и команда воспроизведения такая же. Я все еще ищу правильный URL для потоковой передачи VLC. Это было что-то вродеh264+tcp://example.org:2222
Томаш Гандор
1
Команда tcp / h264: //example.org: 2222. Мне интересно, как играть в этот тип потока на Android. Мобильные телефоны имеют такие плохие приложения.
Валентин Раду
На MacOS: brew install mplayer.
Creimers