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 )
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.
Note:
See TracTickets
for help on using tickets.



you could try with
-http_seekable 0and-seekable 0to 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.