jpegparse required after multipartdemux?

Nicolas Dufresne nicolas at ndufresne.ca
Wed Aug 7 01:54:26 UTC 2019


Le mardi 06 août 2019 à 10:54 +0200, Guillermo Rodriguez Garcia a
écrit :
> Hello all,
> 
> I am trying to decode a live mjpeg stream from an IP camera using souphttpsrc ! multipartdemux ! avdec_ffmpeg, but I get not-negotated errors:
> 
> 0:00:01.216966334   326   0xaba920 WARN                 basesrc gstbasesrc.c:3055:gst_base_src_loop:<souphttpsrc0> error: Internal data stream error.
> 0:00:01.217129000   326   0xaba920 WARN                 basesrc gstbasesrc.c:3055:gst_base_src_loop:<souphttpsrc0> error: streaming stopped, reason not-negotiated (-4)
> ERROR: from element /GstPipeline:pipeline0/GstSoupHTTPSrc:souphttpsrc0: Internal data stream error. 
> 
> If I add jpegparse between multipartdemux and avdec_ffmpeg, then all works fine.
> 
> But, once I add jpegparse, do I need multipartdemux at all ? souphttpsrc ! jpegparse ! avdec_ffmpeg *also* seems to work fine. Is there any reason to keep multipartdemux then?

jpegparse is able to skip over corruption in between jpeg files, in
this case the multipart stuff. If you look at the templates,
avdec_mjpeg requires the field parsed=TRUE in the caps. That field is
used to indicate an already parsed (aka framed) jpeg stream. This is
needed as this element does not have a internal parser, unlike jpegdec.
Ideally there should be a way to get this field out of multipartdemux
if the content is frames, but I'm not familiar enough to give more
advise.

> 
> Moreover, if I replace avdec_ffmpeg with jpegdec, then I don't seem to need neither multipartdemux nor jpegparse; I can just have souphttpsrc ! jpegdec and that seems to work as well...

jpegdec element has an internal parser. Note that it will be slower if
you pass random data then if you use multipartdemux.

> 
> I am a bit confused about the interaction between all these plugins. Also I checked the examples in the documentation, but that didn't help -- the docs for multipartdemux show an example pipeline that includes jpegparse, while the docs for a jpegparse show a similar example pipeline that does not include multipartdemux...
> 
> Is there a "canonical" or recommended way to decode a mjpeg stream from a live HTTP source?
> 
> Thank you,
> 
> Guillermo Rodriguez Garcia
> guille.rodriguez at gmail.com
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel



More information about the gstreamer-devel mailing list