GNOME Bugzilla – Bug 759592
Seek with negative rates appears to be broken with hlsdemux
Last modified: 2015-12-18 22:23:16 UTC
As discussed in [1], seeking with negative rates appears to be broken. Basic pipeline: [souphttpsrc] - [hlsdemux] - [tsdemux] - [h264parse] - [avdec_h264] - [ximagesink] The event I send for a positive rate (works fine): start = self.elementPipeline.query_position(Gst.Format.TIME)[1] end = self.elementPipeline.query_duration(Gst.Format.TIME)[1] seekEvent = Gst.Event.new_seek (argRate, Gst.Format.TIME, Gst.SeekFlags.FLUSH | Gst.SeekFlags.ACCURATE, Gst.SeekType.SET, int(start), Gst.SeekType.SET, int(end)) The event I send for a negative rate (doesn't work): start = -1 end = self.elementPipeline.query_position(Gst.Format.TIME)[1] seekEvent = Gst.Event.new_seek (argRate, Gst.Format.TIME, Gst.SeekFlags.NONE, Gst.SeekType.NONE, int(start), Gst.SeekType.NONE, int(end)) Not sure where this issues stems from, but I suspect hlsdemux in gst-plugins-bad. [1] http://gstreamer-devel.966125.n4.nabble.com/Playing-a-VOD-HLS-feed-backwards-stops-playback-td4674935.html
hlsdemux only supports trick play (i.e. negative rate) if your content includes iframe playlists (most content I've seen doesn't). Can you confirm whether or not you have iframe playlists?
That's actually not true. Reverse playback also works without I-frame playlists, it just puts a lot of pressure on the network, CPU/decoders and queues.
We are not using an i-frame playlist but are running on a high end system.
My first bet is that tsdemux is swallowing the discont flags from adaptivedemux and then h264parse doesn't ever push anything downstream.
(In reply to Sebastian Dröge (slomo) from comment #2) > That's actually not true. Reverse playback also works without I-frame > playlists, it just puts a lot of pressure on the network, CPU/decoders and > queues. Oops. Sorry for confusing things.
commit 29de588e2fe14be39db01e4841d1ea95c94a551a Author: Thiago Santos <thiagoss@osg.samsung.com> Date: Fri Dec 18 11:56:17 2015 -0300 hlsdemux: always set timestamp on reverse playback Downstream needs to be able to restore the timestamps after a discont to do reverse playback https://bugzilla.gnome.org/show_bug.cgi?id=759592