aboutsummaryrefslogtreecommitdiffstats
path: root/yt_dlp/extractor/common.py
diff options
context:
space:
mode:
authorpukkandan <pukkandan.ytdlp@gmail.com>2021-11-22 23:32:14 +0530
committerpukkandan <pukkandan.ytdlp@gmail.com>2021-11-23 01:29:10 +0530
commit234416e4bf39d442e7abd036b7c59b8934a4086b (patch)
tree58f064fdc050b6160cdeffb958d77cba054c8689 /yt_dlp/extractor/common.py
parentc98d4df23bfba30fc38f2614bd96db67644e7ddf (diff)
downloadhypervideo-pre-234416e4bf39d442e7abd036b7c59b8934a4086b.tar.lz
hypervideo-pre-234416e4bf39d442e7abd036b7c59b8934a4086b.tar.xz
hypervideo-pre-234416e4bf39d442e7abd036b7c59b8934a4086b.zip
[downloader/ffmpeg] Fix for direct videos inside mpd manifests
Closes #1751
Diffstat (limited to 'yt_dlp/extractor/common.py')
-rw-r--r--yt_dlp/extractor/common.py9
1 files changed, 5 insertions, 4 deletions
diff --git a/yt_dlp/extractor/common.py b/yt_dlp/extractor/common.py
index a47364d07..1565ba5c3 100644
--- a/yt_dlp/extractor/common.py
+++ b/yt_dlp/extractor/common.py
@@ -2,6 +2,7 @@
from __future__ import unicode_literals
import base64
+import collections
import datetime
import hashlib
import itertools
@@ -2649,7 +2650,7 @@ class InfoExtractor(object):
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 @@ class InfoExtractor(object):
'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 @@ class InfoExtractor(object):
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)