2011-10-06 4 views
13

Ecco quello che sto cercando:webcam in streaming utilizzando gstreamer su UDP

gst-launch -v udpsrc port=1234 ! fakesink dump=1

I test con:

gst-launch -v audiotestsrc ! udpsink host=127.0.0.1 port=1234

e tutto funziona benissimo, posso vedere i pacchetti in arrivo dal audiotestsrc

Ora proviamo con la sorgente della webcam:

gst-launch -v v4l2src device=/dev/video0 ! queue ! videoscale method=1 ! "video/x-raw-yuv,width=320,height=240" ! queue ! videorate ! "video/x-raw-yuv,framerate=(fraction)15/1" ! queue ! udpsink host=127.0.0.1 port=1234

E non succede nulla, nessun pacchetto appare nella discarica.

Ecco uno logdump di ciò che mostra verboso nel server.

Qualcuno ha un indizio su questo?

+1

dimenticato di menzionare: la sostituzione udpsink con autovideosink per esempio posso vedere la webcam bene –

risposta

17

Prova questi (Potrebbe essere necessario installare plugin gstreamer-ugly per questo)

in streaming UDP da webcam (stream attraverso la rete)

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

UDP Streaming ricevuto da webcam (ricevere attraverso la rete)

gst-launch udpsrc port=1234 ! "application/x-rtp, payload=127" ! rtph264depay ! ffdec_h264 ! xvimagesink sync=false 

Aggiornamento

Per determinare il carico utile alla fine di streaming è sufficiente utilizzare l'opzione verbose con gst-launch -v ...

+2

E 'una buona idea includere un coda tra codifica e streaming. Consente una sincronizzazione migliore e una riproduzione meno agitata. –

+0

@AtillaFiliz Tendo ad usare 'coda' quando lavoro con 'tee' sebbene il tuo punto possa essere valido in questo caso. – enthusiasticgeek

+0

Ho fatto alcuni esperimenti per conto mio. Ho usato hardware specializzato sul lato encoder e l'aggiunta di una coda non ha fatto alcuna differenza. Tuttavia, la qualità della riproduzione è migliorata molto quando ho aggiunto una coda tra rtpdepay e ffdec. –

4

Forse i pacchetti sono troppo grandi per udp? Sono limitati a 64K. Prova a ridimensionare i fotogrammi a dimensioni veramente ridotte per verificare se questo è il motivo. Se è così, potresti essere interessato ad alcuni compressori e payloader/depanditori (gst-inspect | grep pay).