[extractor/common] imporove HLS video only format detection(closes #18923)
This commit is contained in:
		| @@ -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: | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Remita Amine
					Remita Amine