]> jfr.im git - yt-dlp.git/commitdiff
[downloader/ffmpeg] Fix for direct videos inside mpd manifests
authorpukkandan <redacted>
Mon, 22 Nov 2021 18:02:14 +0000 (23:32 +0530)
committerpukkandan <redacted>
Mon, 22 Nov 2021 19:59:10 +0000 (01:29 +0530)
Closes #1751

yt_dlp/downloader/external.py
yt_dlp/extractor/common.py

index 1efbb2fabe687cad7834b591a0e31e56f9278ff2..da69423f726a2455b7dcd3a1d2b9a3f86eaf0543 100644 (file)
@@ -443,8 +443,7 @@ def _call_downloader(self, tmpfilename, info_dict):
         if info_dict.get('requested_formats') or protocol == 'http_dash_segments':
             for (i, fmt) in enumerate(info_dict.get('requested_formats') or [info_dict]):
                 stream_number = fmt.get('manifest_stream_number', 0)
-                a_or_v = 'a' if fmt.get('acodec') != 'none' else 'v'
-                args.extend(['-map', f'{i}:{a_or_v}:{stream_number}'])
+                args.extend(['-map', f'{i}:{stream_number}'])
 
         if self.params.get('test', False):
             args += ['-fs', compat_str(self._TEST_FILE_SIZE)]
index a47364d076b13c86bb26725f0bb6ad96a59935cc..1565ba5c373c3253d814f73a688f664c2ed6ea6f 100644 (file)
@@ -2,6 +2,7 @@
 from __future__ import unicode_literals
 
 import base64
+import collections
 import datetime
 import hashlib
 import itertools
@@ -2649,7 +2650,7 @@ def extract_Initialization(source):
 
         mpd_duration = parse_duration(mpd_doc.get('mediaPresentationDuration'))
         formats, subtitles = [], {}
-        stream_numbers = {'audio': 0, 'video': 0}
+        stream_numbers = collections.defaultdict(int)
         for period in mpd_doc.findall(_add_ns('Period')):
             period_duration = parse_duration(period.get('duration')) or mpd_duration
             period_ms_info = extract_multisegment_info(period, {
@@ -2715,10 +2716,8 @@ def extract_Initialization(source):
                             'format_note': 'DASH %s' % content_type,
                             'filesize': filesize,
                             'container': mimetype2ext(mime_type) + '_dash',
-                            'manifest_stream_number': stream_numbers[content_type]
                         }
                         f.update(parse_codecs(codecs))
-                        stream_numbers[content_type] += 1
                     elif content_type == 'text':
                         f = {
                             'ext': mimetype2ext(mime_type),
@@ -2885,7 +2884,9 @@ def add_segment_url():
                     else:
                         # Assuming direct URL to unfragmented media.
                         f['url'] = base_url
-                    if content_type in ('video', 'audio') or mime_type == 'image/jpeg':
+                    if content_type in ('video', 'audio', 'image/jpeg'):
+                        f['manifest_stream_number'] = stream_numbers[f['url']]
+                        stream_numbers[f['url']] += 1
                         formats.append(f)
                     elif content_type == 'text':
                         subtitles.setdefault(lang or 'und', []).append(f)