Opened 19 months ago

Last modified 18 months ago

#11394 new defect

ffmpeg ignores -seekable 0 when requesting hls key

Reported by: mmis1000 Owned by:
Priority: normal Component: undetermined
Version: unspecified Keywords: hls
Cc: Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description (last modified by mmis1000)

Summary of the bug:
How to reproduce:

% ffmpeg -v debug -seekable 0 -icy 0 -f hls -i 'https://path-to-hls.host/manifest' test.mp4
ffmpeg version 4.4.2-0ubuntu0.22.04.1 Copyright (c) 2000-2021 the FFmpeg developers

...

[https @ 0x5b494dcf0700] request: GET /manifest HTTP/1.1
Accept: */*
Connection: close
Host: path-to-hls.host

...

[https @ 0x5b494dcfbf00] request: GET /key HTTP/1.1
Accept: */*
Range: bytes=0-
Connection: keep-alive
Host: path-to-hls.host

The manifest itself does obey -seekable 0 and not sent with range header. But the key file always send with range header no matter you set it as seekable or not and also there is no other way to disable range header.

Change History (2)

comment:1 by mmis1000, 19 months ago

Description: modified (diff)

comment:2 by Jack Lau, 18 months ago

you could try with -http_seekable 0 and -seekable 0 to disable the range header of hls.

After reading the source code, I found that the seekable option memory is released after being used once. However, in this case, the HLS HTTP request is divided into two parts which belong to different function lifecycles. The http_seekable parameter is specifically used for the second part.

My explanation may not be entirely accurate, but at the very least, you can try using both parameters simultaneously to temporarily meet your needs.

I am working on improving this part of the code to maximize the effectiveness of the seekable option alone.

Last edited 18 months ago by Jack Lau (previous) (diff)
Note: See TracTickets for help on using tickets.