mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 14:45:14 +00:00 
			
		
		
		
	[common] recognize hls manifests that contain video only formats(#11394)
This commit is contained in:
		| @@ -283,11 +283,6 @@ class CBCWatchVideoIE(CBCWatchBaseIE): | ||||
|         formats = self._extract_m3u8_formats(re.sub(r'/([^/]+)/[^/?]+\.m3u8', r'/\1/\1.m3u8', m3u8_url), video_id, 'mp4', fatal=False) | ||||
|         if len(formats) < 2: | ||||
|             formats = self._extract_m3u8_formats(m3u8_url, video_id, 'mp4') | ||||
|         # Despite metadata in m3u8 all video+audio formats are | ||||
|         # actually video-only (no audio) | ||||
|         for f in formats: | ||||
|             if f.get('acodec') != 'none' and f.get('vcodec') != 'none': | ||||
|                 f['acodec'] = 'none' | ||||
|         self._sort_formats(formats) | ||||
|  | ||||
|         info = { | ||||
|   | ||||
| @@ -1224,6 +1224,7 @@ class InfoExtractor(object): | ||||
|                 'protocol': entry_protocol, | ||||
|                 'preference': preference, | ||||
|             }] | ||||
|         audio_groups = set() | ||||
|         last_info = {} | ||||
|         last_media = {} | ||||
|         for line in m3u8_doc.splitlines(): | ||||
| @@ -1239,15 +1240,18 @@ class InfoExtractor(object): | ||||
|                         for v in (media.get('GROUP-ID'), media.get('NAME')): | ||||
|                             if v: | ||||
|                                 format_id.append(v) | ||||
|                         formats.append({ | ||||
|                         f = { | ||||
|                             'format_id': '-'.join(format_id), | ||||
|                             'url': format_url(media_url), | ||||
|                             'language': media.get('LANGUAGE'), | ||||
|                             'vcodec': 'none' if media_type == 'AUDIO' else None, | ||||
|                             'ext': ext, | ||||
|                             'protocol': entry_protocol, | ||||
|                             'preference': preference, | ||||
|                         }) | ||||
|                         } | ||||
|                         if media_type == 'AUDIO': | ||||
|                             f['vcodec'] = 'none' | ||||
|                             audio_groups.add(media['GROUP-ID']) | ||||
|                         formats.append(f) | ||||
|                     else: | ||||
|                         # When there is no URI in EXT-X-MEDIA let this tag's | ||||
|                         # data be used by regular URI lines below | ||||
| @@ -1295,6 +1299,9 @@ class InfoExtractor(object): | ||||
|                         'abr': abr, | ||||
|                     }) | ||||
|                 f.update(parse_codecs(last_info.get('CODECS'))) | ||||
|                 if last_info.get('AUDIO') in audio_groups: | ||||
|                     # TODO: update acodec for for audio only formats with the same GROUP-ID | ||||
|                     f['acodec'] = 'none' | ||||
|                 formats.append(f) | ||||
|                 last_info = {} | ||||
|                 last_media = {} | ||||
|   | ||||
| @@ -78,11 +78,6 @@ class MSNIE(InfoExtractor): | ||||
|                 m3u8_formats = self._extract_m3u8_formats( | ||||
|                     format_url, display_id, 'mp4', | ||||
|                     m3u8_id='hls', fatal=False) | ||||
|                 # Despite metadata in m3u8 all video+audio formats are | ||||
|                 # actually video-only (no audio) | ||||
|                 for f in m3u8_formats: | ||||
|                     if f.get('acodec') != 'none' and f.get('vcodec') != 'none': | ||||
|                         f['acodec'] = 'none' | ||||
|                 formats.extend(m3u8_formats) | ||||
|             else: | ||||
|                 formats.append({ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Remita Amine
					Remita Amine