[FFmpeg-devel] [PATCH 0/2] fix for seeking in HLS with FMP4 media
Steven Liu
lingjiujianke at gmail.com
Sun Nov 10 06:28:40 EET 2024
vectronic <hello.vectronic at gmail.com> 于2024年11月8日周五 05:31写道:
>
> I am again updating and resubmitting a patch which fixes the following ticket:
>
> https://trac.ffmpeg.org/ticket/7359
>
> This fix has been tested and recommended by several people now and I have been using it in production successfully since I submitted it 6 years ago...
>
> The main patch in the series fixes HLS seeking when the HLS package consists of fmp4 files. It mirrors behaviour from mpegts.c in mov.c.
>
> The issue can be demonstrated as follows:
>
> ffmpeg -ss 9 -i http://vectronic.io/hls_seek_issue/fmp4/in.m3u8 -t 3 out.mp4
>
> This produces a zero duration output file.
>
> With the patch applied, the example produces a 3 second output file as expected.
>
> ------
>
> 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 corresponding 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 */
>
> This behaviour needed to be mirrored in the mov demuxer. In mov.c it now detects if the pos has been reset in mov_read_packet(). It clears fragments and indexes and searches for the next root i.e. the next fragment via mov_switch_root().
>
> The second patch in the series simply improves a comment about this behaviour in hls.c
>
>
> vectronic (2):
> avformat/mov: if pos has been reset, clear fragments and indexes and
> search for next root
> avformat/hls: improve comment
>
> libavformat/hls.c | 2 +-
> libavformat/mov.c | 39 ++++++++++++++++++++++++++++++++++++---
> 2 files changed, 37 insertions(+), 4 deletions(-)
>
> --
> 2.39.5 (Apple Git-154)
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
Patchset applied.
Thanks
Steven
More information about the ffmpeg-devel
mailing list