HLS Seek Events on Live Result in Failure

I have an HLS stream that is playing from a local cache that is being downloaded. It plays correctly and I can seek backwards and up to the point where the live stream started (ie, if it started at 10 minutes, I can seek to 5 min and 9:59 min), but I cannot seek past that initial loaded time (ie, I let it play 10 more minutes, so the HLS is 20 total minutes, I can’t then skip backwards to 12 min).

Is there anything that I might be doing incorrectly or that I could change to fix this or is it a bug?

For anyone coming after me hoping for the same answer; after also asking this on Matrix, it sounds like there’s really not a way to do this and is intended. I did look at the code for this and found that to also be the case. I just made a custom patch that will allow me to do this since it was something I needed for my project.

Your question on matrix didn’t include this context.

What exactly is your “local cache” ? a directory ? If you want to be able to seek in everything you downloaded so far … the media playlists on disk need to be updated/rewritten to reflect what is actually downloaded (and not the last version that was downloaded that only points to whatever the server made available at that point in time).

I’m using one of the variant lists. As a segment is downloading, the playlist .m3u8 is updated with what has downloaded (when it’s completely downloaded, it’ll match the origin m3u8). Since it’s downloading, the “#EXT-X-ENDLIST” isn’t added until the live stream ends or the cache download is stopped.

The issue is, if it’s a live stream, it’ll never seek past the point that was last played. An example is if you pause a live stream, wait 5 minutes, then try to play and skip 5 seconds ahead (ie, using gst-play), it’ll not allow it and typically ends abruptly with “Reached end of play list.”