Hello forum,
I have a few Gstreamer based coming up where I'd like to use stdin/stdout or named pipes to sink and source video. I've not had much luck in getting a simple hello world type pipeline working. Hopefully someone can take a look at this with me and give me some pointers. I'd like to see how I could take a very simple pipeline like this (which works find on Ubuntu 14.04)... gst-launch-1.0 -e -v videotestsrc is-live=true horizontal-speed=1 ! autovideosink sync=false ... and split into two parts. Part one: pipe the output of videotestsrc to stdout, and then Part two: pipe stdin to the autovideosink element. I tried this: gst-launch-1.0 -e -v videotestsrc is-live=true horizontal-speed=1 ! fdsink | gst-launch-1.0 -e -v fdsrc fd=0 ! autovideosink But when I try this I get the following error message: Setting pipeline to PAUSED ... Pipeline is PREROLLING ... Got context from element 'autovideosink0-actual-sink-glimage': gst.gl.GLDisplay=context, gst.gl.GLDisplay=(GstGLDisplay)"\(GstGLDisplay\)\ gldisplay0"; ERROR: from element /GstPipeline:pipeline0/GstFdSrc:fdsrc0: Internal data flow error. Additional debug info: gstbasesrc.c(2933): void gst_base_src_loop(GstPad *) (): /GstPipeline:pipeline0/GstFdSrc:fdsrc0: streaming task paused, reason not-negotiated (-4) ERROR: pipeline doesn't want to preroll. Setting pipeline to NULL ... Freeing pipeline ... I've tried searching for better syntax but so far no luck in getting anything to work. If someone could take a look and point me in the right direction it would be super helpful. I have a few apps I need to develop where using named pipes is going to be very handy so hopefully figuring out the proper syntax and usage of fdsrc and fdsink will get me to where I need to be. Thanks and regards! |
Hi:
My first message had some [raw] tags (via the Nabble site ) around the bash commands I provided and those look to have been removed from the email digest. So I'm reposting my request without those tags, as I think most GStreamers rely on the email digests. Also fixed a typo. :) ---START REPOST--- Hello forum, I have a few Gstreamer based projects coming up where I'd like to use stdin/stdout or named pipes to sink and source video. I've not had much luck in getting a simple hello world type pipeline working. Hopefully someone can take a look at this with me and give me some pointers. I'd like to see how I could take a very simple pipeline like this (which works find on Ubuntu 14.04)... gst-launch-1.0 -e -v videotestsrc is-live=true horizontal-speed=1 ! autovideosink sync=false ... and split into two parts. Part one: pipe the output of videotestsrc to stdout, and then Part two: pipe stdin to the autovideosink element. I tried this: gst-launch-1.0 -e -v videotestsrc is-live=true horizontal-speed=1 ! fdsink | gst-launch-1.0 -e -v fdsrc fd=0 ! autovideosink But when I try this I get the following error message: Setting pipeline to PAUSED ... Pipeline is PREROLLING ... Got context from element 'autovideosink0-actual-sink-glimage': gst.gl.GLDisplay=context, gst.gl.GLDisplay=(GstGLDisplay)"\(GstGLDisplay\)\ gldisplay0"; ERROR: from element /GstPipeline:pipeline0/GstFdSrc:fdsrc0: Internal data flow error. Additional debug info: gstbasesrc.c(2933): void gst_base_src_loop(GstPad *) (): /GstPipeline:pipeline0/GstFdSrc:fdsrc0: streaming task paused, reason not-negotiated (-4) ERROR: pipeline doesn't want to preroll. Setting pipeline to NULL ... Freeing pipeline ... I've tried searching for better syntax but so far no luck in getting anything to work. If someone could take a look and point me in the right direction it would be super helpful. I have a few apps I need to develop where using named pipes is going to be very handy so hopefully figuring out the proper syntax and usage of fdsrc and fdsink will get me to where I need to be. Thanks and regards! |
On Tue, 2016-09-20 at 07:48 -0700, Piper984 wrote:
Hi, > gst-launch-1.0 -e -v videotestsrc is-live=true horizontal-speed=1 ! > fdsink | > gst-launch-1.0 -e -v fdsrc fd=0 ! autovideosink > > But when I try this I get the following error message: > > streaming task paused, reason not-negotiated (-4) The pipe won't maintain the one-buffer-one-frame packetisation. You can either add a videoparse element after fdsrc and configure it as needed (plus add a videoconvert in front of autovideosink, since there's no negotiation across the pipe), or use gdppay ! fdsink / fdsrc ! gdpdepay. There are other mechanisms as well like shared memory sinks/sources fwiw. Cheers -Tim -- Tim Müller, Centricular Ltd - http://www.centricular.com Join us at the GStreamer Conference! 10-11 October 2016 in Berlin, Germany http://gstreamer.freedesktop.org/conference/ _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Hi Tim,
Thanks a bunch for the reply. What you explain makes sense but I'm still not getting the results I am looking for. Based on your reply, I then adjusted my gst-launch example as follows... gst-launch-1.0 -v -e videotestsrc ! gdppay ! fdsink | gst-launch-1.0 -e -v fdsrc fd=0 ! gdpdepay ! autovideosink ... thinking this should open up a window and display the test pattern. However, I get the errors about not being able to preroll... Setting pipeline to PAUSED ... Pipeline is PREROLLING ... Got context from element 'autovideosink0-actual-sink-glimage': gst.gl.GLDisplay=context, gst.gl.GLDisplay=(GstGLDisplay)"\(GstGLDisplay\)\ gldisplay0"; ERROR: from element /GstPipeline:pipeline0/GstGDPDepay:gdpdepay0: Could not decode stream. Additional debug info: gstgdpdepay.c(443): gst_gdp_depay_chain (): /GstPipeline:pipeline0/GstGDPDepay:gdpdepay0: could not create event from GDP packet ERROR: pipeline doesn't want to preroll. Setting pipeline to NULL ... Freeing pipeline ... ... and I assume that this is because I just don't quite understand how the autovideosink element works with whatever it's sent. Do you have a working bash/gst-launch command that shows the displaying of video from stdin or from a named pipe? I think if I could just see a working example it would help me build my understanding. Thanks! Piper |
Free forum by Nabble | Edit this page |