Hello,

With reference to:

https://trac.ffmpeg.org/ticket/7359

I believe another way this issue manifests itself is using ffplay and trying to 
seek forward 10 seconds with the right arrow key: playback freezes. 

I have dug into this and developed a hack which seems to resolve the issue, BUT 
I have no idea if this is a valid, correct fix.

I have a local m3u8 file which was showing this problem and I can now 
programmatically seek to the correct point. I can also seek correctly via 
ffplay and ffmpeg. I have also tried the URL from the trak ticket and this now 
works as well. All current fate samples tests pass.

I submit the patch here for anyone that knows more about the codebase. I am 
happy to rework etc. as required. At the very least it might help anyone 
experiencing this problem in the meantime if they wish to run a patched ffmpeg 
version.

Within hls.c when hls_read_seek() is called it resets the stream position as 
follows:

/* Reset the pos, to let the mpegts demuxer know we've seeked. */
pls->pb.pos = 0;
 
There is support for this in the mpegts handle_packets() code to check if the 
position has been reset and clear out any PES packets:

 if (avio_tell(s->pb) != ts->last_pos) {
        int i;
        av_log(ts->stream, AV_LOG_TRACE, "Skipping after seek\n");
        /* seek detected, flush pes buffer */
 
I have basically tried to do the same ‘reset’ logic within mov.c  
mov_read_packet() and force a search for the next mov root.

Regards,

Nick



Nick Ryan (1):
  Trying to fix trac ticket #7359

 libavformat/mov.c | 19 ++++++++++++++++---
 1 file changed, 16 insertions(+), 3 deletions(-)

-- 
2.17.1 (Apple Git-112)

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to