2016-07-22 35 views
1

Ich versuche, einen Gstreamer Videostream unter Ubuntu 14.04 zu bekommen, aber die Empfängerseite kann das Video nicht richtig darstellen. Ich habe einen Sender Pipeline Senden MJPEG Bilder, die ich so beginnen:Ubuntu 14.04 Gstreamer autovideosink

gst-launch-1.0 -v videotestsrc ! jpegenc ! rtpjpegpay ! udpsink host=127.0.0.1 port=5200 

Die Ausgabe lautet:

Setting pipeline to PAUSED ... 
Pipeline is PREROLLING ... 
/GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0.GstPad:src: caps = video/x-raw, width=(int)320, height=(int)240, framerate=(fraction)30/1, format=(string)I420, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive 
/GstPipeline:pipeline0/GstJpegEnc:jpegenc0.GstPad:sink: caps = video/x-raw, width=(int)320, height=(int)240, framerate=(fraction)30/1, format=(string)I420, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive 
/GstPipeline:pipeline0/GstJpegEnc:jpegenc0.GstPad:src: caps = image/jpeg, sof-marker=(int)0, width=(int)320, height=(int)240, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1 
/GstPipeline:pipeline0/GstRtpJPEGPay:rtpjpegpay0.GstPad:src: caps = application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)JPEG, a-framerate=(string)30.000000, a-framesize=(string)320-240, payload=(int)96, ssrc=(uint)1970481773, timestamp-offset=(uint)1012832172, seqnum-offset=(uint)21614 
/GstPipeline:pipeline0/GstUDPSink:udpsink0.GstPad:sink: caps = application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)JPEG, a-framerate=(string)30.000000, a-framesize=(string)320-240, payload=(int)96, ssrc=(uint)1970481773, timestamp-offset=(uint)1012832172, seqnum-offset=(uint)21614 
/GstPipeline:pipeline0/GstRtpJPEGPay:rtpjpegpay0.GstPad:sink: caps = image/jpeg, sof-marker=(int)0, width=(int)320, height=(int)240, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1 
/GstPipeline:pipeline0/GstRtpJPEGPay:rtpjpegpay0: timestamp = 1012832172 
/GstPipeline:pipeline0/GstRtpJPEGPay:rtpjpegpay0: seqnum = 21614 
Pipeline is PREROLLED ... 
Setting pipeline to PLAYING ... 
New clock: GstSystemClock 

Die Empfangspipeline ist:

gst-launch-1.0 udpsrc port=5200 caps="application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)JPEG, a-framerate=(string)30.000000, a-framesize=(string)320-240, payload=(int)96" ! rtpjpegdepay ! jpegdec ! xvimagesink 

bemerke ich die Kappen kopiert haben aus den Absenderinformationen.

Allerdings bekomme ich immer einen Fehler "konnte klebrige Ereignisse nicht senden", und der Empfänger wird sofort beendet. Was könnte ich falsch machen? Meine Ausgabe ist unter:

Setting pipeline to PAUSED ... 
Pipeline is live and does not need PREROLL ... 
Setting pipeline to PLAYING ... 
New clock: GstSystemClock 
0:00:00.016961467 12229  0x266a400 WARN    GST_PADS gstpad.c:3669:gst_pad_peer_query:<jpegdec0:src> could not send sticky events 
0:00:00.017297845 12229  0x266a400 WARN     basesrc gstbasesrc.c:2865:gst_base_src_loop:<udpsrc0> error: Internal data flow error. 
0:00:00.017306308 12229  0x266a400 WARN     basesrc gstbasesrc.c:2865:gst_base_src_loop:<udpsrc0> error: streaming task paused, reason not-negotiated (-4) 
ERROR: from element /GstPipeline:pipeline0/GstUDPSrc:udpsrc0: Internal data flow error. 
Additional debug info: 
gstbasesrc.c(2865): gst_base_src_loop(): /GstPipeline:pipeline0/GstUDPSrc:udpsrc0: 
streaming task paused, reason not-negotiated (-4) 
Execution ended after 0:00:00.000651039 
Setting pipeline to PAUSED ... 
Setting pipeline to READY ... 
Setting pipeline to NULL ... 
Freeing pipeline ... 

Ich habe versucht, die autovideosink, xximagesink, mit den gleichen Ergebnissen.

Danke.

+0

die klebrigen Ereignisse bekomme ich fast die ganze Zeit .. ignoriere es .. das eigentliche Problem ist - nicht verhandelt .. es bedeutet, dass die Elemente nicht vollständig miteinander verknüpfen, weil sie einander nicht verstehen, werde ich es auf meinem überprüfen Maschine – nayana

Antwort

0

Okey Sie müssen nur videoconvert hinzufügen - die jpegdec erzeugt Video, das xvimagesink nicht versteht:

gst-launch-1.0 udpsrc port=5200 ! application/x-rtp\,\ media\=\(string\)video\,\ clock-rate\=\(int\)90000\,\ encoding-name\=\(string\)JPEG\,\ a-framerate\=\(string\)\"30\\\,000000\"\,\ payload\=\(int\)26\,\ ssrc\=\(uint\)2512101225\,\ timestamp-offset\=\(uint\)1627080146\,\ seqnum-offset\=\(uint\)4727 ! rtpjpegdepay ! jpegdec ! videoconvert ! xvimagesink 

Wie ich das herausgefunden? unter Verwendung fakesink auf diese Weise:

udpsrc ! fakesink -v 

gearbeitet, dann

udpsrc ! rptjpegdepay ! fakesink 

arbeitete wieder .. so ich so weiter und finden Sie heraus, dass das Problem wirklich in xvimagesink ist .. Seine seltsam, dass wir es nicht tun erhalten expliziter Fehlermeldung ..

auch können Sie die App debuggen mit:

GST_DEBUG=4 gst-launch-1.0 udpsrc ..... 

Sie können zu dem Teil blättern, wo nicht verhandelt wurde, und sich umsehen.

+0

das hat funktioniert, danke !!!! –

+0

@wireless_freedom froh, das zu hören :) wenn es Ihr Problem löst, können Sie diese Antwort annehmen, indem Sie unter der Abstimmungsnummer ein Häkchen setzen – nayana