When should I send a starting seek?

amindfv at mailbox.org amindfv at mailbox.org
Wed Apr 20 09:03:45 UTC 2022

On Tue, Apr 19, 2022 at 11:38:45PM +0200, Mathieu Duponchelle via gstreamer-devel wrote:
> At a low level, the usual solution is to preroll the pipeline, then once that is done send a flushing seek.
> nleurisource can take care of this process for you, for instance:
> gst-launch-1.0 nleurisource uri=file:///home/meh/Videos/the-great-gatsby-720p-trailer.mov inpoint=10000000000 duration=10000000000 caps="video/x-raw(ANY)" ! videoconvert ! autovideosink
> Adapt to your use case as necessary :)

Thanks very much for your response! I find nleurisource works well with `gst-launch`, but when I replace "uridecodebin" with "nleurisource" in my .c file, I get an error:

    Error received from element qtdemux1: Internal data stream error

Is there a clear sign from that error where the problem is? Or should I share my code?


> On Apr 19 2022, at 10:26 pm, amindfv--- via gstreamer-devel <gstreamer-devel at lists.freedesktop.org> wrote:
> > I've built a pipeline that looks something like this
> >
> > uridecodebin -\
> > >- filter - videoconvert - autovideosink
> > uridecodebin -/
> >
> > (I can provide code if needed)
> > Which works well. My problem comes in, though, when I want to start the two uridecodebins at a certain point in their files (for example, starting 10 seconds in and running for 30 seconds).
> > I've been sending a segment seek event (to each uridecodebin) immediately after linking the uridecodebin video pad to the filter, but I get segfaults and other errors, e.g.:
> > gst_segment_clip: assertion 'segment->format == format' failed
> > and
> > gst_video_codec_frame_unref: assertion 'frame->ref_count > 0' failed
> > What's the correct way to construct a graph that begins partway into a decoded file?
> > Thanks!
> > Tom
> >

More information about the gstreamer-devel mailing list