Просмотр исходного кода

[downloader/hls] Fix incorrect end byte in Range HTTP header for media segments with EXT-X-BYTERANGE (#24512) (closes #14748)

The end of the byte range is the first byte that is NOT part of the to
be downloaded range. So don't include it into the requested HTTP
download range, as this additional byte leads to a broken TS packet and
subsequently to e.g. visible video corruption.

Fixes #14748.
Stefan Pöschel 5 лет назад
Родитель
Сommit
6e65a2a67e
1 измененных файлов с 1 добавлено и 1 удалено
  1. 1 1
      youtube_dl/downloader/hls.py

+ 1 - 1
youtube_dl/downloader/hls.py

@@ -141,7 +141,7 @@ class HlsFD(FragmentFD):
                     count = 0
                     count = 0
                     headers = info_dict.get('http_headers', {})
                     headers = info_dict.get('http_headers', {})
                     if byte_range:
                     if byte_range:
-                        headers['Range'] = 'bytes=%d-%d' % (byte_range['start'], byte_range['end'])
+                        headers['Range'] = 'bytes=%d-%d' % (byte_range['start'], byte_range['end'] - 1)
                     while count <= fragment_retries:
                     while count <= fragment_retries:
                         try:
                         try:
                             success, frag_content = self._download_fragment(
                             success, frag_content = self._download_fragment(