• BurroCargado's avatar
    Fix seeking HLS on-demand streaming not working · 11d1f560
    BurroCargado authored
    This issue occurs when playing HLS streaming delivered
    from a server that does not support partial requests.
    The issue is reproduced as follows(using Ubuntu 20.04 PC):
    
    1. Prepare HLS example content.
    
    $ mkdir test
    $ ffmpeg -i example.flac -vn -c:a aac -b:a 128000 -f hls -hls_list_size 0 test/output.m3u8
    (ffmpeg 4.2.4 is used)
    
    2. Prepare web server without partial requests support.
    (Docker version 20.10.12 and NGINX official Docker image is used)
    
    $ docker run --name tmp-nginx-container -d nginx
    $ docker cp tmp-nginx-container:/etc/nginx/conf.d/default.conf .
    $ docker rm -f tmp-nginx-container
    
    Edit default.conf and add "max_ranges 0;" to "location / {...}".
    This disables partial requests support,
    removes 'Accept-Ranges: bytes' header from the server response.
    Then, run the server:
    
    $ docker run --name test-nginx -v $PWD/test:/usr/share/nginx/html:ro -v $PWD/default.conf:/etc/nginx/conf.d/default.conf -d -p 8080:80 nginx
    
    3. Setup MPD to Play the next URL.
    
    http://address-of-the-server:8080/output.m3u8
    
    Seeking this stream results in "exception: Not seekable".
    11d1f560
Name
Last commit
Last update
..
AdPlugDecoderPlugin.cxx Loading commit data...
AdPlugDecoderPlugin.h Loading commit data...
AudiofileDecoderPlugin.cxx Loading commit data...
AudiofileDecoderPlugin.hxx Loading commit data...
DsdLib.cxx Loading commit data...
DsdLib.hxx Loading commit data...
DsdiffDecoderPlugin.cxx Loading commit data...
DsdiffDecoderPlugin.hxx Loading commit data...
DsfDecoderPlugin.cxx Loading commit data...
DsfDecoderPlugin.hxx Loading commit data...
FaadDecoderPlugin.cxx Loading commit data...
FaadDecoderPlugin.hxx Loading commit data...
FfmpegDecoderPlugin.cxx Loading commit data...
FfmpegDecoderPlugin.hxx Loading commit data...
FfmpegIo.cxx Loading commit data...
FfmpegIo.hxx Loading commit data...
FfmpegMetaData.cxx Loading commit data...
FfmpegMetaData.hxx Loading commit data...
FlacCommon.cxx Loading commit data...
FlacCommon.hxx Loading commit data...
FlacDecoderPlugin.cxx Loading commit data...
FlacDecoderPlugin.h Loading commit data...
FlacDomain.cxx Loading commit data...
FlacDomain.hxx Loading commit data...
FlacInput.cxx Loading commit data...
FlacInput.hxx Loading commit data...
FlacPcm.cxx Loading commit data...
FlacPcm.hxx Loading commit data...
FlacStreamDecoder.hxx Loading commit data...
FluidsynthDecoderPlugin.cxx Loading commit data...
FluidsynthDecoderPlugin.hxx Loading commit data...
GmeDecoderPlugin.cxx Loading commit data...
GmeDecoderPlugin.hxx Loading commit data...
HybridDsdDecoderPlugin.cxx Loading commit data...
HybridDsdDecoderPlugin.hxx Loading commit data...
MadDecoderPlugin.cxx Loading commit data...
MadDecoderPlugin.hxx Loading commit data...
MikmodDecoderPlugin.cxx Loading commit data...
MikmodDecoderPlugin.hxx Loading commit data...
ModCommon.cxx Loading commit data...
ModCommon.hxx Loading commit data...
ModplugDecoderPlugin.cxx Loading commit data...
ModplugDecoderPlugin.hxx Loading commit data...
MpcdecDecoderPlugin.cxx Loading commit data...
MpcdecDecoderPlugin.hxx Loading commit data...
Mpg123DecoderPlugin.cxx Loading commit data...
Mpg123DecoderPlugin.hxx Loading commit data...
OggCodec.cxx Loading commit data...
OggCodec.hxx Loading commit data...
OggDecoder.cxx Loading commit data...
OggDecoder.hxx Loading commit data...
OpenmptDecoderPlugin.cxx Loading commit data...
OpenmptDecoderPlugin.hxx Loading commit data...
OpusDecoderPlugin.cxx Loading commit data...
OpusDecoderPlugin.h Loading commit data...
OpusDomain.cxx Loading commit data...
OpusDomain.hxx Loading commit data...
OpusHead.cxx Loading commit data...
OpusHead.hxx Loading commit data...
OpusReader.hxx Loading commit data...
OpusTags.cxx Loading commit data...
OpusTags.hxx Loading commit data...
PcmDecoderPlugin.cxx Loading commit data...
PcmDecoderPlugin.hxx Loading commit data...
SidplayDecoderPlugin.cxx Loading commit data...
SidplayDecoderPlugin.hxx Loading commit data...
SndfileDecoderPlugin.cxx Loading commit data...
SndfileDecoderPlugin.hxx Loading commit data...
VorbisDecoderPlugin.cxx Loading commit data...
VorbisDecoderPlugin.h Loading commit data...
VorbisDomain.cxx Loading commit data...
VorbisDomain.hxx Loading commit data...
WavpackDecoderPlugin.cxx Loading commit data...
WavpackDecoderPlugin.hxx Loading commit data...
WildmidiDecoderPlugin.cxx Loading commit data...
WildmidiDecoderPlugin.hxx Loading commit data...
meson.build Loading commit data...