Stream webcam video mit gstreamer 1.0 über UDP an den PC

Ich versuche zu stream video aus einem Raspberry Pi (Raspbian) auf einem Windows 7 PC, wie in diesem video: https://www.youtube.com/watch?v=lNvYanDLHZA

Ich habe eine Logitech C270 angeschlossen an den Raspberry Pi und habe es geschafft webcam-video-stream über TCP mit:

gst-launch v4l2src device=/dev/video0 ! \
'video/x-raw-yuv,width=640,height=480' ! \
x264enc pass=qual quantizer=20 tune=zerolatency ! \
rtph264pay ! tcpsink host=$pi_ip port=5000

von meinem Pi. Erhalten diese mit VLC funktioniert, aber mit 3 sec delay.
Ich möchte dies über UDP um eine kürzere Verzögerung (korrigiert mich wenn ich falsch Liege). Aber nicht für das Leben von mir herausfinden. Ich habe versucht Folgendes:

gst-launch-1.0 v4l2src device=/dev/video0 ! \
'video/x-raw-yuv,width=640,height=480' ! \
x264enc pass=qual quantizer=20 tune=zerolatency ! \ 
rtph264pay ! udpsink host=$pc_ip port=1234

und

gst-launch-1.0 udpsrc port=1234 ! \ 
"application/x-rtp, payload=127" ! \
rtph264depay ! ffdec_h264 ! fpsdisplaysink sync=false text-overlay=false

Für die Pi-und PC-Seite, bzw. (aus
Webcam streaming mit gstreamer über UDP)
aber mit kein Glück. (habe versucht, ändern Sie die video/x-raw-yuv, um fit 1.0 version, aber noch ohne Glück)

Irgendwelche Tipps würde sehr geschätzt werden!

Bearbeiten

Mit der raspi-Kamera (nicht webcam) der folgenden Werke:

Windows-batch-Skript:

@echo off
cd C:\gstreamer\1.0\x86_64\bin
gst-launch-1.0 -e -v udpsrc port=5000 ! application/x-rtp, payload=96 !        
rtpjitterbuffer ! rtph264depay ! avdec_h264 ! fpsdisplaysink sync=false    
text-overlay=false

Raspberry Pi Bash-Skript:

#!/bin/bash
clear
raspivid -n -t 0 -rot 270 -w 960 -h 720 -fps 30 -b 6000000 -o - | gst-       
launch-1.0 -e -vvvv fdsrc ! h264parse ! rtph264pay pt=96 config-interval=5 !   
udpsink host=***YOUR_PC_IP*** port=5000

Aber ich kann nicht herausfinden, wie zu verwenden, um die webcam anstelle des raspberry pi Kamera (d.h. v4l2src anstelle von raspivid) in der gleichen Weise

Edit 2

Folgende funktioniert, aber ist sehr langsam und hat zu einer enormen Verzögerung:

RPi

gst-launch-1.0 -vv -e v4l2src device=/dev/video0  \
! videoscale \
! "video/x-raw,width=400,height=200,framerate=10/1" \
! x264enc pass=qual quantizer=20  tune=zerolatency  \
! h264parse \
! rtph264pay config-interval=5 pt=96  \
! udpsink host=$myip port=$myport

PC:

gst-launch-1.0 -e -v udpsrc port=5001 ! ^
application/x-rtp, payload=96 ! ^
rtpjitterbuffer ! ^
rtph264depay ! ^
avdec_h264 ! ^
autovideosink sync=false text-overlay=false

Ich jetzt vermuten, dass (Dank Tipp von @Mustafa Chelik), dass die enorme Verzögerung ist aufgrund der Tatsache, dass der raspberry pi hat zu Kodieren, die webcam-video, während der raspberry pi video ist bereits codiert, nicht sicher, ob das Sinn macht, obwohl?

Ich glaube nicht, dass das ändern von TCP zu UDP zu reduzieren wird delay (obwohl ich bin mir nicht hundert Prozent sicher über diese). Warum denken Sie so? By the way, können RaspberryPi Kodieren Sie HD-Videos und streamen?! Ist RaspberryPi, das schnell zu tun? Was ist die video - framerate? 25?
Ich würde denken, dass UDP schneller war, als für live-streaming, da es ein verbindungsloses Protokoll, in der Erwägung, dass TCP verbindungsorientiert ist, und damit haben einige Weiterverbreitung Verzögerungen (den threeway-handshake und alles, was). Nicht sicher, ob es in der Lage, HD-Videos zu streamen, aber es sollte in der Lage sein, stream guter Qualität video. Nicht sicher über die framerate, noch auf Arbeit herauszufinden, dass heraus.

InformationsquelleAutor simen-andresen | 2015-01-15

Schreibe einen Kommentar