mirror of
https://github.com/ytdl-org/youtube-dl.git
synced 2024-11-25 11:41:52 +00:00
[extractor/common] imporove HLS video only format detection(closes #18923)
This commit is contained in:
parent
e2dd132f05
commit
2bfc1d9d68
1 changed files with 8 additions and 2 deletions
|
@ -1596,6 +1596,7 @@ class InfoExtractor(object):
|
||||||
# References:
|
# References:
|
||||||
# 1. https://tools.ietf.org/html/draft-pantos-http-live-streaming-21
|
# 1. https://tools.ietf.org/html/draft-pantos-http-live-streaming-21
|
||||||
# 2. https://github.com/rg3/youtube-dl/issues/12211
|
# 2. https://github.com/rg3/youtube-dl/issues/12211
|
||||||
|
# 3. https://github.com/rg3/youtube-dl/issues/18923
|
||||||
|
|
||||||
# We should try extracting formats only from master playlists [1, 4.3.4],
|
# We should try extracting formats only from master playlists [1, 4.3.4],
|
||||||
# i.e. playlists that describe available qualities. On the other hand
|
# i.e. playlists that describe available qualities. On the other hand
|
||||||
|
@ -1667,11 +1668,16 @@ class InfoExtractor(object):
|
||||||
rendition = stream_group[0]
|
rendition = stream_group[0]
|
||||||
return rendition.get('NAME') or stream_group_id
|
return rendition.get('NAME') or stream_group_id
|
||||||
|
|
||||||
|
# parse EXT-X-MEDIA tags before EXT-X-STREAM-INF inorder to have the
|
||||||
|
# chance to detect video only formats when EXT-X-STREAM-INF tags
|
||||||
|
# precede EXT-X-MEDIA tags in HLS manifest such as [3].
|
||||||
|
for line in m3u8_doc.splitlines():
|
||||||
|
if line.startswith('#EXT-X-MEDIA:'):
|
||||||
|
extract_media(line)
|
||||||
|
|
||||||
for line in m3u8_doc.splitlines():
|
for line in m3u8_doc.splitlines():
|
||||||
if line.startswith('#EXT-X-STREAM-INF:'):
|
if line.startswith('#EXT-X-STREAM-INF:'):
|
||||||
last_stream_inf = parse_m3u8_attributes(line)
|
last_stream_inf = parse_m3u8_attributes(line)
|
||||||
elif line.startswith('#EXT-X-MEDIA:'):
|
|
||||||
extract_media(line)
|
|
||||||
elif line.startswith('#') or not line.strip():
|
elif line.startswith('#') or not line.strip():
|
||||||
continue
|
continue
|
||||||
else:
|
else:
|
||||||
|
|
Loading…
Reference in a new issue