|
|
|
@ -59,6 +59,7 @@ from ..utils import (
|
|
|
|
|
parse_m3u8_attributes,
|
|
|
|
|
extract_attributes,
|
|
|
|
|
parse_codecs,
|
|
|
|
|
urljoin,
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -1631,11 +1632,6 @@ class InfoExtractor(object):
|
|
|
|
|
extract_Initialization(segment_template)
|
|
|
|
|
return ms_info
|
|
|
|
|
|
|
|
|
|
def combine_url(base_url, target_url):
|
|
|
|
|
if re.match(r'^https?://', target_url):
|
|
|
|
|
return target_url
|
|
|
|
|
return '%s%s%s' % (base_url, '' if base_url.endswith('/') else '/', target_url)
|
|
|
|
|
|
|
|
|
|
mpd_duration = parse_duration(mpd_doc.get('mediaPresentationDuration'))
|
|
|
|
|
formats = []
|
|
|
|
|
for period in mpd_doc.findall(_add_ns('Period')):
|
|
|
|
@ -1685,12 +1681,11 @@ class InfoExtractor(object):
|
|
|
|
|
'tbr': int_or_none(representation_attrib.get('bandwidth'), 1000),
|
|
|
|
|
'asr': int_or_none(representation_attrib.get('audioSamplingRate')),
|
|
|
|
|
'fps': int_or_none(representation_attrib.get('frameRate')),
|
|
|
|
|
'vcodec': 'none' if content_type == 'audio' else representation_attrib.get('codecs'),
|
|
|
|
|
'acodec': 'none' if content_type == 'video' else representation_attrib.get('codecs'),
|
|
|
|
|
'language': lang if lang not in ('mul', 'und', 'zxx', 'mis') else None,
|
|
|
|
|
'format_note': 'DASH %s' % content_type,
|
|
|
|
|
'filesize': filesize,
|
|
|
|
|
}
|
|
|
|
|
f.update(parse_codecs(representation_attrib.get('codecs')))
|
|
|
|
|
representation_ms_info = extract_multisegment_info(representation, adaption_set_ms_info)
|
|
|
|
|
if 'segment_urls' not in representation_ms_info and 'media_template' in representation_ms_info:
|
|
|
|
|
|
|
|
|
@ -1774,7 +1769,7 @@ class InfoExtractor(object):
|
|
|
|
|
f['fragments'].append({'url': initialization_url})
|
|
|
|
|
f['fragments'].extend(representation_ms_info['fragments'])
|
|
|
|
|
for fragment in f['fragments']:
|
|
|
|
|
fragment['url'] = combine_url(base_url, fragment['url'])
|
|
|
|
|
fragment['url'] = urljoin(base_url, fragment['url'])
|
|
|
|
|
try:
|
|
|
|
|
existing_format = next(
|
|
|
|
|
fo for fo in formats
|
|
|
|
|