[FFmpeg-user] why doesn't fast seeking work in live hls

Louis Letourneau lletourn49 at gmail.com
Sat May 20 00:49:07 EEST 2017


Just a question before I start diving in the code, why doesn't fast
seeking work on live hls feeds/streams/files?

Context:
If you create a dummy video:
mkdir -p a;ffmpeg -y -s 640x480 -f rawvideo -pix_fmt rgb24 -r 25 -i
/dev/zero -vf "drawtext=fontfile=/usr/share/fonts/truetype/freefont/FreeMono.ttf:
text=%{n}: x=(w-tw)/2: y=h-(2*lh): fontcolor=white: box=1:
boxcolor=0x000000FF" -an -vcodec libx264 -preset medium -tune
stillimage -crf 24 -pix_fmt yuv420p -shortest -force_key_frames
"expr:gte(t,n_forced*5)" -bf 0 -hls_time 5 -hls_list_size 0 -hls_wrap
0 -hls_allow_cache 1 -hls_segment_filename "a/a_%04d.ts" -t 9999
a/a.m3u8

let it encode
and in another terminal try to seek (once the encoding passed the time
you want to seek to)

ffmpeg -v info -ss 00:00:10 -y -live_start_index 0 -i a/a.m3u8 -f
image2 -vframes 1 a.png ; feh a.png

You'll get in the logs
a/a.m3u8: could not seek to position 11.400

and then ffmpeg will decode all frames until the asked frame.

If you quit the encoder and seek again, it fast seeks immediately
(jumps to the right segment and decodes te right frame). It doesn't
need to fo through all the segments.

My question is, if the segments (.ts) are already there and the
manifest, m3u8 already shows that they are there, why doesn't fast
seeking work?

Thanks
Louis


More information about the ffmpeg-user mailing list