GNOME Bugzilla – Bug 691162
qtdemux: very long prerolling time for totalrecall.mp4 in push mode
Last modified: 2018-05-10 12:29:45 UTC
The following pipeline takes a very long time to preroll when pipeline is configured in push mode: gst-launch-1.0 -v souphttpsrc location= http://absolut.zogzog.org/share/samples/mp4/totalrecall.mp4 ! qtdemux .audio_0 ! fakesink silent=FALSE It seems the audio stream first sample is far after the first video samples, prerolling only happens after sample 163363. Maybe the file is badly muxed ? It works well in pull mode, but I guess it is easy to seek back and forth in this case.
I can't even play this file when qtdemux is in pull mode. Is there any way qtdemux could play files with audio samples at the end of the file in both push and pull mode ? I think it's better to seek a lot even on slow sources than to not play at all.
> I can't even play this file when qtdemux is in pull mode. You mean push mode? > I think it's better to seek a lot even on slow sources than to > not play at all. That can be enabled by setting ring-buffer-max-size on playbin, fwiw, or enabling download-buffering.
(In reply to comment #2) > > I can't even play this file when qtdemux is in pull mode. > > You mean push mode? I did mean pull mode, there was a typo in my pipeline, sorry... The file still fails in push mode though. > > > I think it's better to seek a lot even on slow sources than to > > not play at all. > > That can be enabled by setting ring-buffer-max-size on playbin, fwiw, or > enabling download-buffering. The ring-buffer breaks playback of some other streams like http web radios, because buffering will take a very long time and the stream is not advertised as live. Download buffering is out of the question, the device I'm using does not have local storage.
Maybe the demuxers could handle a downstream "overrun" signal from a queue, triggering a mechanism to send data on the other pads ?
The ring buffer will also trigger buffering very often on files where audio and video samples are far away. After each seek the queue will be empty and send a buffering event.
The problem could also be solved by reopening the http url for each stream in the avi file... No seek would be needed then except to read the index. This might be a little complicated to do though ;)
*** This bug has been marked as a duplicate of bug 705703 ***