I'm trying to stream from my webcam over UDP with the following two commands:
gst-launch-1.0 -e -v v4l2src device=/dev/v4l/by-id/usb-046d_HD_Pro_Webcam_C920_3AB1BE0F-video-index0 ! \ image/jpeg, width=1920, height=1080, framerate=30/1 ! \ rtpjpegpay ! \ udpsink host=127.0.0.1 port=1234 and gst-launch-1.0 -e -v udpsrc port=1234 caps="application/x-rtp,payload=96,media=video,clock-rate=90000, encoding-name=JPEG, a-framerate=30/1, height=1920, width=1080" ! \ rtpjpegdepay ! \ jpegdec ! \ avimux ! \ filesink location=movie.avi which yields error messages such as this: 0:00:00.117861054 6837 0x26e7540 DEBUG avimux gstavimux.c:415:gst_avi_mux_vidsink_set_caps:<avimux0> avimux0:video_0, caps=video/x-raw, format=(string)I420, width=(int)1920, height=(int)1080, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)mpeg2, framerate=(fraction)0/1 0:00:00.117925143 6837 0x26e7540 WARN avimux gstavimux.c:641:gst_avi_mux_vidsink_set_caps:<avimux0> refused caps video/x-raw, format=(string)I420, width=(int)1920, height=(int)1080, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)mpeg2, framerate=(fraction)0/1 ERROR: from element /GstPipeline:pipeline0/GstUDPSrc:udpsrc0: Internal data flow error. Additional debug info: gstbasesrc.c(2943): gst_base_src_loop (): /GstPipeline:pipeline0/GstUDPSrc:udpsrc0: streaming task paused, reason not-negotiated (-4) I'm not sure what exactly is wrong with the caps. From what I understand gst-inspect avimux says that 0/1 is a valid framerate. Replacing avimux with autovideosink works splendidly and allows me to stream perfectly. Skipping the UDP step allows avimux to capture the movie as expected. I need to save the video from a remote, how ever, so any help towards achieving this will be sincerely appreciated. _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
On Mi, 2016-06-01 at 13:26 +0200, Mikkel Antonsen wrote:
> > which yields error messages such as this: > > 0:00:00.117861054 6837 0x26e7540 DEBUG avimux > gstavimux.c:415:gst_avi_mux_vidsink_set_caps:<avimux0> > avimux0:video_0, caps=video/x-raw, format=(string)I420, > width=(int)1920, height=(int)1080, interlace- > mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, chroma- > site=(string)mpeg2, framerate=(fraction)0/1 > 0:00:00.117925143 6837 0x26e7540 WARN avimux > gstavimux.c:641:gst_avi_mux_vidsink_set_caps:<avimux0> refused caps > video/x-raw, format=(string)I420, width=(int)1920, height=(int)1080, > interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, > chroma-site=(string)mpeg2, framerate=(fraction)0/1 > ERROR: from element /GstPipeline:pipeline0/GstUDPSrc:udpsrc0: > Internal data flow error. > Additional debug info: > gstbasesrc.c(2943): gst_base_src_loop (): > /GstPipeline:pipeline0/GstUDPSrc:udpsrc0: > streaming task paused, reason not-negotiated (-4) > > I'm not sure what exactly is wrong with the caps. From what I > understand gst-inspect avimux says that 0/1 is a valid framerate. specific about the framerate. But when following the code in gstavimux.c, your guess is correct. It doesn't support 0/1 as framerate. You will have to provide it with a valid framerate, e.g. by using a videorate followed by a capsfilter with a specific framerate in front of avimux. -- Sebastian Dröge, Centricular Ltd · http://www.centricular.com _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel signature.asc (968 bytes) Download Attachment |
I have run into a similar problem. Below is the pipeline that I use plus the error messages.
gst-launch-1.0 -vvv udpsrc port=8888 ! application/x-rtp,clock-rate=90000 ! rtpmp4vdepay ! mpeg4videoparse ! video/mpeg ! avimux ! filesink location=/tmp/test.avi Setting pipeline to PAUSED ... Pipeline is live and does not need PREROLL ... Setting pipeline to PLAYING ... New clock: GstSystemClock /GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = "application/x-rtp\,\ clock-rate\=\(int\)90000\,\ media\=\(string\)video\,\ encoding-name\=\(string\)MP4V-ES" /GstPipeline:pipeline0/GstRtpMP4VDepay:rtpmp4vdepay0.GstPad:src: caps = "video/mpeg\,\ mpegversion\=\(int\)4\,\ systemstream\=\(boolean\)false" /GstPipeline:pipeline0/GstMpeg4VParse:mpeg4vparse0.GstPad:sink: caps = "video/mpeg\,\ mpegversion\=\(int\)4\,\ systemstream\=\(boolean\)false" /GstPipeline:pipeline0/GstRtpMP4VDepay:rtpmp4vdepay0.GstPad:sink: caps = "application/x-rtp\,\ clock-rate\=\(int\)90000\,\ media\=\(string\)video\,\ encoding-name\=\(string\)MP4V-ES" /GstPipeline:pipeline0/GstMpeg4VParse:mpeg4vparse0.GstPad:src: caps = "video/mpeg\,\ mpegversion\=\(int\)4\,\ systemstream\=\(boolean\)false\,\ parsed\=\(boolean\)true" /GstPipeline:pipeline0/GstMpeg4VParse:mpeg4vparse0.GstPad:src: caps = "video/mpeg\,\ mpegversion\=\(int\)4\,\ systemstream\=\(boolean\)false\,\ parsed\=\(boolean\)true\,\ profile\=\(string\)simple\,\ level\=\(string\)4a\,\ codec_data\=\(buffer\)000001b004000001b59113000001000000012000c8888007d28045a14103\,\ width\=\(int\)1280\,\ height\=\(int\)720\,\ pixel-aspect-ratio\=\(fraction\)1/1" ERROR: from element /GstPipeline:pipeline0/GstUDPSrc:udpsrc0: Internal data flow error. Additional debug info: /home/poky/build/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/libs/gst/base/gstbasesrc.c(2933): gst_base_src_loop (): /GstPipeline:pipeline0/GstUDPSrc:udpsrc0: streaming task paused, reason not-negotiated (-4) Execution ended after 0:00:00.463042667 It fails the negotiation somehow but I am not exactly sure what is missing. It works fine if I replace avimux with other mux like matroskamux or mp4mux or if the stream is directly from the source not going through UDP. |
Le lundi 16 janvier 2017 à 11:00 -0800, charlesu a écrit :
> I have run into a similar problem. Below is the pipeline that I use > plus the > error messages. > > gst-launch-1.0 -vvv udpsrc port=8888 ! application/x-rtp,clock- > rate=90000 ! > rtpmp4vdepay > ! mpeg4videoparse ! video/mpeg ! avimux ! filesink > location=/tmp/test.avi Please, file this issue on bugs.gnome.org. This is clearly a bug. Here's a simpler pipeline that should work, but instead fails. gst-launch-1.0 -v videotestsrc ! mpeg4videoparse ! avenc_mpeg4 ! avimux ! fakesink > Setting pipeline to PAUSED ... > Pipeline is live and does not need PREROLL ... > Setting pipeline to PLAYING ... > New clock: GstSystemClock > /GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = > "application/x-rtp\,\ clock-rate\=\(int\)90000\,\ > media\=\(string\)video\,\ > encoding-name\=\(string\)MP4V-ES" > /GstPipeline:pipeline0/GstRtpMP4VDepay:rtpmp4vdepay0.GstPad:src: caps > = > "video/mpeg\,\ mpegversion\=\(int\)4\,\ > systemstream\=\(boolean\)false" > /GstPipeline:pipeline0/GstMpeg4VParse:mpeg4vparse0.GstPad:sink: caps > = > "video/mpeg\,\ mpegversion\=\(int\)4\,\ > systemstream\=\(boolean\)false" > /GstPipeline:pipeline0/GstRtpMP4VDepay:rtpmp4vdepay0.GstPad:sink: > caps = > "application/x-rtp\,\ clock-rate\=\(int\)90000\,\ > media\=\(string\)video\,\ > encoding-name\=\(string\)MP4V-ES" > /GstPipeline:pipeline0/GstMpeg4VParse:mpeg4vparse0.GstPad:src: caps = > "video/mpeg\,\ mpegversion\=\(int\)4\,\ > systemstream\=\(boolean\)false\,\ > parsed\=\(boolean\)true" > /GstPipeline:pipeline0/GstMpeg4VParse:mpeg4vparse0.GstPad:src: caps = > "video/mpeg\,\ mpegversion\=\(int\)4\,\ > systemstream\=\(boolean\)false\,\ > parsed\=\(boolean\)true\,\ profile\=\(string\)simple\,\ > level\=\(string\)4a\,\ > codec_data\=\(buffer\)000001b004000001b59113000001000000012000c888800 > 7d28045a14103\,\ > width\=\(int\)1280\,\ height\=\(int\)720\,\ > pixel-aspect-ratio\=\(fraction\)1/1" > ERROR: from element /GstPipeline:pipeline0/GstUDPSrc:udpsrc0: > Internal data > flow error. > Additional debug info: > /home/poky/build/tmp/work/cortexa9hf-vfp-neon-poky-linux- > gnueabi/gstreamer1.0/1.4.5-r0/gstreamer- > 1.4.5/libs/gst/base/gstbasesrc.c(2933): > gst_base_src_loop (): /GstPipeline:pipeline0/GstUDPSrc:udpsrc0: > streaming task paused, reason not-negotiated (-4) > Execution ended after 0:00:00.463042667 > > It fails the negotiation somehow but I am not exactly sure what is > missing. > It works fine if I replace avimux with other mux like matroskamux or > mp4mux > or if the stream is directly from the source not going through UDP. > > > > > -- > View this message in context: http://gstreamer-devel.966125.n4.nabble > .com/Avimux-refuses-caps-when-sending-JPEGs-over-UDP- > tp4677838p4681478.html > Sent from the GStreamer-devel mailing list archive at Nabble.com. > _______________________________________________ > gstreamer-devel mailing list > [hidden email] > https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel signature.asc (188 bytes) Download Attachment |
Is there any chance that this may have been fixed in one of the newer versions? I am using 1.4.5 since this is what I get with the yocto release that I am using. Any chance that there is a patch or something that I can use?
|
Le 17 janv. 2017 6:08 PM, "charlesu" <[hidden email]> a écrit : Is there any chance that this may have been fixed in one of the newer I tested it on git master, so no. Please file a bug, it's most likely not a complicated one. _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Bug submitted. Bug# 777411.
|
I have dug a little deeper on this and it seems to be stuck at the following:
0:00:00.351575666 GST_CAPS gstpad.c:3014:gst_pad_query_caps_default:<avimux0:video_0> result 0xb5404600 video/mpeg, mpegversion=(int)4, systemstream=(boolean)false, codec_data=(buffer)000001b004000001b59113000001000000012000c8888007d28045a14103, parsed=(boolean)true, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 0/1, 2147483647/1 ] 0:00:00.355332000 GST_PADS gstpad.c:3095:gst_pad_query_default:<avimux0:video_0> not forwarding 0xb5402120 (caps) query 0:00:00.355417333 GST_PADS gstpad.c:3589:gst_pad_query:<avimux0:video_0> sent query 0xb5402120 (caps), result 1 0:00:00.355486000 GST_CAPS gstutils.c:2776:gst_pad_query_caps:<avimux0:video_0> query returned video/mpeg, mpegversion=(int)4, systemstream=(boolean)false, codec_data=(buffer)000001b004000001b59113000001000000012000c8888007d28045a14103, parsed=(boolean)true, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 0/1, 2147483647/1 ] 0:00:00.355737333 GST_PADS gstpad.c:2941:gst_pad_query_accept_caps_default:<avimux0:video_0> allowed caps subset video/mpeg, mpegversion=(int)4, systemstream=(boolean)false, codec_data=(buffer)000001b004000001b59113000001000000012000c8888007d28045a14103, parsed=(boolean)true, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 0/1, 2147483647/1 ], caps video/mpeg, mpegversion=(int)4, systemstream=(boolean)false, codec_data=(buffer)000001b004000001b59113000001000000012000c8888007d28045a14103, parsed=(boolean)true, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1 0:00:00.355991333 GST_PADS gstpad.c:3095:gst_pad_query_default:<avimux0:video_0> not forwarding 0xb54020f0 (accept-caps) query 0:00:00.356057333 GST_PADS gstpad.c:3589:gst_pad_query:<avimux0:video_0> sent query 0xb54020f0 (accept-caps), result 1 0:00:00.356137000 GST_PADS gstpad.c:3589:gst_pad_query:<capsfilter0:sink> sent query 0xb54020c0 (accept-caps), result 1 0:00:00.356207000 GST_CAPS gstpad.c:5030:pre_eventfunc_check:<capsfilter0:sink> caps video/mpeg, mpegversion=(int)4, systemstream=(boolean)false, codec_data=(buffer)000001b004000001b59113000001000000012000c8888007d28045a14103, parsed=(boolean)true, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1 not accepted 0:00:00.356341666 GST_PADS gstpad.c:5235:gst_pad_send_event_unchecked:<capsfilter0:sink> pre event check failed The allowed caps has framerate in it but the caps that it checks against does not. The debug log is obtained with the following pipeline. GST_DEBUG=3,*CAPS*:6,*PAD*:6 gst-launch-1.0 udpsrc address=127.0.0.1 port=8888 caps="application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)MP4V-ES, profile-level-id=(string)4, config=(string)000001b004000001b59113000001000000012000c8888007d28045a14103, payload=(int)96, ssrc=(uint)48003208, timestamp-offset=(uint)4244557471, seqnum-offset=(uint)28562" ! rtpmp4vdepay ! mpeg4videoparse ! video/mpeg,framerate=15/1 ! avimux ! filesink location=/tmp/test.avi |
Free forum by Nabble | Edit this page |