aboutsummaryrefslogtreecommitdiff
path: root/youtube_dl
diff options
context:
space:
mode:
authorYen Chi Hsuan <yan12125@gmail.com>2016-03-11 21:40:07 +0800
committerYen Chi Hsuan <yan12125@gmail.com>2016-03-11 21:40:07 +0800
commit64f08d4ff2392135be07774f2d5371f111f21592 (patch)
tree2664977778269aae36181360f718d201a8fa5197 /youtube_dl
parente738e43358a7f34dbbcb73b45b228d7b9b3360a7 (diff)
parent6d210f20905a5c31f72eff16f9f4dbbed7f52c70 (diff)
Merge pull request #8766 from yan12125/dash-detect-ext
Detect file extensions of DASH formats from their codecs
Diffstat (limited to 'youtube_dl')
-rw-r--r--youtube_dl/extractor/common.py2
-rw-r--r--youtube_dl/utils.py16
2 files changed, 18 insertions, 0 deletions
diff --git a/youtube_dl/extractor/common.py b/youtube_dl/extractor/common.py
index bfa9c82f6..393677251 100644
--- a/youtube_dl/extractor/common.py
+++ b/youtube_dl/extractor/common.py
@@ -29,6 +29,7 @@ from ..utils import (
age_restricted,
bug_reports_message,
clean_html,
+ codec2ext,
compiled_regex_type,
determine_ext,
error_to_compat_str,
@@ -1471,6 +1472,7 @@ class InfoExtractor(object):
f = {
'format_id': '%s-%s' % (mpd_id, representation_id) if mpd_id else representation_id,
'url': base_url,
+ 'ext': codec2ext(representation_attrib.get('codecs')),
'width': int_or_none(representation_attrib.get('width')),
'height': int_or_none(representation_attrib.get('height')),
'tbr': int_or_none(representation_attrib.get('bandwidth'), 1000),
diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py
index 22a39a0ab..0e04e91a4 100644
--- a/youtube_dl/utils.py
+++ b/youtube_dl/utils.py
@@ -1893,6 +1893,22 @@ def mimetype2ext(mt):
}.get(res, res)
+def codec2ext(codec):
+ codec_type = codec.split('.')[0]
+
+ # Leave the return value None for unknown values as codec_type
+ # is not a good fallback for file extensions
+ return {
+ 'avc1': 'mp4',
+ 'avc2': 'mp4',
+ 'avc3': 'mp4',
+ 'avc4': 'mp4',
+ 'mp4a': 'm4a',
+ 'vorbis': 'webm',
+ 'vp9': 'webm',
+ }.get(codec_type)
+
+
def urlhandle_detect_ext(url_handle):
try:
url_handle.headers