aboutsummaryrefslogtreecommitdiffstats
path: root/yt_dlp/downloader/external.py
diff options
context:
space:
mode:
authorpukkandan <pukkandan.ytdlp@gmail.com>2021-08-24 05:42:45 +0530
committerpukkandan <pukkandan.ytdlp@gmail.com>2021-08-24 05:52:00 +0530
commit6251555f1c670c66aa781bf9f29e9b5b33d90be1 (patch)
tree869fe441d4728dd995bd6199c87677ec0539191e /yt_dlp/downloader/external.py
parent330690a214e5a9b6bebcfe9f7e46ebd8ffe77f03 (diff)
downloadhypervideo-pre-6251555f1c670c66aa781bf9f29e9b5b33d90be1.tar.lz
hypervideo-pre-6251555f1c670c66aa781bf9f29e9b5b33d90be1.tar.xz
hypervideo-pre-6251555f1c670c66aa781bf9f29e9b5b33d90be1.zip
[downloader/ffmpeg] Support for DASH manifests (experimental)
Closes #159
Diffstat (limited to 'yt_dlp/downloader/external.py')
-rw-r--r--yt_dlp/downloader/external.py15
1 files changed, 7 insertions, 8 deletions
diff --git a/yt_dlp/downloader/external.py b/yt_dlp/downloader/external.py
index be5bd6dd8..fdfabb38d 100644
--- a/yt_dlp/downloader/external.py
+++ b/yt_dlp/downloader/external.py
@@ -342,7 +342,7 @@ class HttpieFD(ExternalFD):
class FFmpegFD(ExternalFD):
- SUPPORTED_PROTOCOLS = ('http', 'https', 'ftp', 'ftps', 'm3u8', 'm3u8_native', 'rtsp', 'rtmp', 'rtmp_ffmpeg', 'mms')
+ SUPPORTED_PROTOCOLS = ('http', 'https', 'ftp', 'ftps', 'm3u8', 'm3u8_native', 'rtsp', 'rtmp', 'rtmp_ffmpeg', 'mms', 'http_dash_segments')
can_download_to_stdout = True
@classmethod
@@ -462,12 +462,11 @@ class FFmpegFD(ExternalFD):
args += self._configuration_args((f'_i{i + 1}', '_i')) + ['-i', url]
args += ['-c', 'copy']
- if info_dict.get('requested_formats'):
- for (i, fmt) in enumerate(info_dict['requested_formats']):
- if fmt.get('acodec') != 'none':
- args.extend(['-map', '%d:a:0' % i])
- if fmt.get('vcodec') != 'none':
- args.extend(['-map', '%d:v:0' % i])
+ 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}'])
if self.params.get('test', False):
args += ['-fs', compat_str(self._TEST_FILE_SIZE)]
@@ -490,7 +489,7 @@ class FFmpegFD(ExternalFD):
else:
args += ['-f', EXT_TO_OUT_FORMATS.get(ext, ext)]
- args += self._configuration_args((f'_o1', '_o', ''))
+ args += self._configuration_args(('_o1', '_o', ''))
args = [encodeArgument(opt) for opt in args]
args.append(encodeFilename(ffpp._ffmpeg_filename_argument(tmpfilename), True))