Hi all, I'm quite new to Gstreamer but based on the Gstreamer Streaming doc (https://community.freescale.com/docs/DOC-94646) I've created pipelines that stream to/from the board and work well. I'm then trying to use the same pipeline with a filesrc instead of the videotestsrc, this is where the problem starts.
For streaming out of the board I'm using:
gst-launch -ve gstrtpbin name=rtpbin filesrc location=/home/linaro/Desktop/foreman_cif.yuv ! vpuenc codec=6 ! queue ! rtph264pay ! rtpbin.send_rtp_sink_0 rtpbin.send_rtp_src_0 ! queue ! udpsink host=192.168.1.29 port=5000 sync=false rtpbin.send_rtcp_src_0 ! udpsink host=192.168.1.29 port=5001 sync=false async=false udpsrc port=5005 ! rtpbin.recv_rtcp_sink_0
This does nothing on the recieving computer, the terminal output is below:
Setting pipeline to PAUSED ...
[INFO] Product Info: i.MX6Q/D/S
vpuenc versions: )
plugin: 3.0.7
wrapper: 1.0.35(VPUWRAPPER_ARM_LINUX Build on Apr 18 2013 23:02:29)
vpulib: 5.4.12
firmware: 2.1.9.36350
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
/GstPipeline:pipeline0/GstRtpBin:rtpbin.GstGhostPad:send_rtcp_src_0: caps = application/x-rtcp
/GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpSession:rtpsession0.GstPad:send_rtcp_src: caps = application/x-rtcp
/GstPipeline:pipeline0/GstUDPSink:udpsink1.GstPad:sink: caps = application/x-rtcp
/GstPipeline:pipeline0/GstRtpBin:rtpbin.GstGhostPad:send_rtcp_src_0.GstProxyPad:proxypad3: caps = application/x-rtcp
Got EOS from element "pipeline0".
Execution ended after 812999 ns.
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
/GstPipeline:pipeline0/GstUDPSink:udpsink1.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstRtpBin:rtpbin.GstGhostPad:send_rtcp_src_0: caps = NULL
/GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpSession:rtpsession0.GstPad:send_rtcp_src: caps = NULL
Setting pipeline to NULL ...
Freeing pipeline ...
When streaming from the PC, I'm using
gst-launch -v gstrtpbin name=rtpbin filesrc location=/home/*/*/big_buck_bunny_1080p_h264_HQ.mov typefind=true ! qtdemux ! rtph264pay ! rtpbin.send_rtp_sink_0 rtpbin.send_rtp_src_0 ! queue ! udpsink host=192.168.1.21 port=5000 rtpbin.send_rtcp_src_0 ! udpsink host=192.168.1.21 port=5001 sync=false async=false udpsrc port=5005 ! rtpbin.recv_rtcp_sink_0
This outputs:
Setting pipeline to PAUSED ...
/GstPipeline:pipeline0/GstFileSrc:filesrc0.GstPad:src: caps = video/quicktime
Pipeline is live and does not need PREROLL ...
/GstPipeline:pipeline0/GstQTDemux:qtdemux0.GstPad:sink: caps = video/quicktime
Setting pipeline to PLAYING ...
New clock: GstSystemClock
/GstPipeline:pipeline0/GstRtpBin:rtpbin.GstGhostPad:send_rtcp_src_0: caps = application/x-rtcp
/GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpSession:rtpsession0.GstPad:send_rtcp_src: caps = application/x-rtcp
/GstPipeline:pipeline0/GstUDPSink:udpsink1.GstPad:sink: caps = application/x-rtcp
/GstPipeline:pipeline0/GstRtpBin:rtpbin.GstGhostPad:send_rtcp_src_0.GstProxyPad:proxypad3: caps = application/x-rtcp
ERROR: from element /GstPipeline:pipeline0/GstQTDemux:qtdemux0: GStreamer encountered a general stream error.
Additional debug info:
qtdemux.c(3891): gst_qtdemux_loop (): /GstPipeline:pipeline0/GstQTDemux:qtdemux0:
streaming stopped, reason not-linked
Execution ended after 2227471 ns.
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
/GstPipeline:pipeline0/GstUDPSink:udpsink1.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstRtpBin:rtpbin.GstGhostPad:send_rtcp_src_0: caps = NULL
/GstPipeline:pipeline0/GstRtpBin:rtpbin/GstRtpSession:rtpsession0.GstPad:send_rtcp_src: caps = NULL
/GstPipeline:pipeline0/GstQTDemux:qtdemux0.GstPad:audio_00: caps = NULL
/GstPipeline:pipeline0/GstQTDemux:qtdemux0.GstPad:video_00: caps = NULL
/GstPipeline:pipeline0/GstQTDemux:qtdemux0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstFileSrc:filesrc0.GstPad:src: caps = NULL
Setting pipeline to NULL ...
Freeing pipeline ...
I've tried different variations of these pipelines and so far the only successful one i've tried is by demuxing/decoding the .mov file and then re-encoding the file and streaming from the PC to the board. This gives a good picture but has a very poor framerate (I persume due to the computer decoding/encoding H.264 simultaneously!) If anyone has any ideas, please let me know!