#7485 closed defect (fixed)
HLS not accurately seeking on TS
Reported by: | Louis Letourneau | Owned by: | |
---|---|---|---|
Priority: | normal | Component: | avformat |
Version: | git-master | Keywords: | hls |
Cc: | Blocked By: | ||
Blocking: | Reproduced by developer: | no | |
Analyzed by developer: | no |
Description
Summary of the bug:
Seeking accurately in HLS videos doens't work, but it
works fine in other containers (mp4, mkv, etc)
tried with ffmpeg version 3.4.4 and master f85fa100db7d35952
% ./ffmpeg version N-92147-gf85fa100db Copyright (c) 2000-2018 the FFmpeg developers built with gcc 7 (Ubuntu 7.3.0-16ubuntu3) configuration: --enable-libfreetype --enable-gpl --enable-libx264 --enable-libx265 --enable-nonfree --enable-libfdk-aac --enable-libopus --enable-libpulse --enable-libvpx --enable-openssl --enable-static libavutil 56. 19.101 / 56. 19.101 libavcodec 58. 32.100 / 58. 32.100 libavformat 58. 18.104 / 58. 18.104 libavdevice 58. 4.105 / 58. 4.105 libavfilter 7. 33.100 / 7. 33.100 libswscale 5. 2.100 / 5. 2.100 libswresample 3. 2.100 / 3. 2.100 libpostproc 55. 2.100 / 55. 2.100
How to reproduce:
Create an HLS video like this
% mkdir 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 60 a/a.m3u8
And also create it's mp4 counterpart:
% ./ffmpeg -i a/a.m3u8 -codec copy a.mp4
And try to seek in any segment:
F=130;rm -f f.png;./ffmpeg -y -ss `awk "BEGIN {print (${F})/25}"` -i a/a.m3u8 -f image2 -q:v 1 -vframes 1 f.png ./ffplay f.png
Got frame 250 (bad)
F=126;rm -f f.png;./ffmpeg -y -ss `awk "BEGIN {print (${F})/25}"` -i a/a.m3u8 -f image2 -q:v 1 -vframes 1 f.png ; feh f.png
Got frame 250 (bad)
F=125;rm -f f.png;./ffmpeg -y -ss `awk "BEGIN {print (${F})/25}"` -i a/a.m3u8 -f image2 -q:v 1 -vframes 1 f.png ./ffplay f.png
Got frame 125 (good)
F=124;rm -f f.png;./ffmpeg -y -ss `awk "BEGIN {print (${F})/25}"` -i a/a.m3u8 -f image2 -q:v 1 -vframes 1 f.png ./ffplay f.png
Got frame 125 (bad)
Now try the same with the mp4 and you'll always get the exact right frame
F=130;rm -f f.png;./ffmpeg -y -ss `awk "BEGIN {print (${F})/25}"` -i a.mp4 -f image2 -q:v 1 -vframes 1 f.png ./ffplay f.png
Got 130 (good)
F=126;rm -f f.png;./ffmpeg -y -ss `awk "BEGIN {print (${F})/25}"` -i a.mp4 -f image2 -q:v 1 -vframes 1 f.png ./ffplay f.png
Got 126 (good)
etc
it seems to only be seeking on segment boundaries.
Change History (11)
comment:1 by , 6 years ago
comment:3 by , 5 years ago
Component: | undetermined → avformat |
---|---|
Keywords: | hls added |
Version: | unspecified → git-master |
comment:4 by , 5 years ago
Patch has been reworked based on comments and resubmitted:
https://patchwork.ffmpeg.org/project/ffmpeg/list/?series=1018
http://ffmpeg.org/pipermail/ffmpeg-devel/2020-April/261341.html
comment:5 by , 3 years ago
comment:6 by , 3 years ago
I think this is related with this https://trac.ffmpeg.org/ticket/9356
It's been a long time for this one and couple of patches are existing already.
comment:7 by , 3 years ago
Resolution: | → fixed |
---|---|
Status: | open → closed |
Summary: | HLS not accurately seeking → HLS not accurately seeking on TS |
e78d0810d1741535c95e5ae0f198977626b1cdff fixes it, indeed.
ffmpeg -ss 3 -i http://vectronic.io/hls_seek_issue/ts/in.m3u8 -t 2 out.mp4
produces not 262 bytes files and to ts does not produce 0 bytes file.
ffmpeg -ss 3 -i http://vectronic.io/hls_seek_issue/fmp4/in.m3u8 -t 2 out.mp4
still is bad, since fmp4 requires http://ffmpeg.org/pipermail/ffmpeg-devel/2020-April/261343.html but that is #7359.
THAT MUST BE fixed ASAP too.
comment:10 by , 2 years ago
I tried the latest from master and I'm still having issues seeking in HLS/TS (loops). Still requires the https://patchwork.ffmpeg.org/project/ffmpeg/list/?series=1018 patch to work properly. I will try to do more testing and give you an update.
comment:11 by , 10 days ago
The fmp4 issue is also fixed, in 380a518c439d4e5e3cf17b97e4a06259e8048f99
Work from Nick Ryan solves the issue it seems:
https://patchwork.ffmpeg.org/patch/10767/