diff options
author | Philipp Hagemeister <phihag@phihag.de> | 2015-01-10 01:59:14 +0100 |
---|---|---|
committer | Philipp Hagemeister <phihag@phihag.de> | 2015-01-10 01:59:14 +0100 |
commit | 45598f15788568a8432da19544e5bdc390032aca (patch) | |
tree | e0c41e910eb267c6ef254f8d47cc36f32d5663ac | |
parent | 130239460370870c33f259ed1549878388996d3f (diff) | |
parent | d02115f83727ae0d4f394073235dc97086c64266 (diff) |
Merge remote-tracking branch 'aft90/merge-output-format'
Conflicts:
youtube_dl/YoutubeDL.py
-rwxr-xr-x | youtube_dl/YoutubeDL.py | 6 | ||||
-rw-r--r-- | youtube_dl/__init__.py | 4 | ||||
-rw-r--r-- | youtube_dl/options.py | 6 |
3 files changed, 16 insertions, 0 deletions
diff --git a/youtube_dl/YoutubeDL.py b/youtube_dl/YoutubeDL.py index e34b36016..61675d8ec 100755 --- a/youtube_dl/YoutubeDL.py +++ b/youtube_dl/YoutubeDL.py @@ -203,6 +203,7 @@ class YoutubeDL(object): Progress hooks are guaranteed to be called at least once (with status "finished") if the download is successful. + merge_output_format: Extension to use when merging formats. The following parameters are not used by YoutubeDL itself, they are used by @@ -909,6 +910,10 @@ class YoutubeDL(object): 'contain the video, try using ' '"-f %s+%s"' % (format_2, format_1)) return + output_ext = ( + formats_info[0]['ext'] + if self.params.get('merge_output_format') is None + else self.params['merge_output_format']) selected_format = { 'requested_formats': formats_info, 'format': rf, @@ -921,6 +926,7 @@ class YoutubeDL(object): 'vbr': formats_info[0].get('vbr'), 'acodec': formats_info[1].get('acodec'), 'abr': formats_info[1].get('abr'), + 'ext': output_ext, } else: selected_format = None diff --git a/youtube_dl/__init__.py b/youtube_dl/__init__.py index 844992d8e..b4ae35a2b 100644 --- a/youtube_dl/__init__.py +++ b/youtube_dl/__init__.py @@ -166,6 +166,9 @@ def _real_main(argv=None): if opts.recodevideo is not None: if opts.recodevideo not in ['mp4', 'flv', 'webm', 'ogg', 'mkv']: parser.error('invalid video recode format specified') + if opts.merge_output_format is not None and not '+' in opts.format: #if merge format output is used on videos that don't require merging, ignore + opts.merge_output_format = None + if opts.date is not None: date = DateRange.day(opts.date) else: @@ -323,6 +326,7 @@ def _real_main(argv=None): 'encoding': opts.encoding, 'exec_cmd': opts.exec_cmd, 'extract_flat': opts.extract_flat, + 'merge_output_format': opts.merge_output_format, 'postprocessors': postprocessors, } diff --git a/youtube_dl/options.py b/youtube_dl/options.py index feaca03a3..0ed5e3db4 100644 --- a/youtube_dl/options.py +++ b/youtube_dl/options.py @@ -302,6 +302,12 @@ def parseOpts(overrideArguments=None): '--youtube-skip-dash-manifest', action='store_false', dest='youtube_include_dash_manifest', help='Do not download the DASH manifest on YouTube videos') + video_format.add_option( + '--merge-output-format', + action='store', dest='merge_output_format', metavar='FORMAT' ,default=None, + help=( + 'If a merge is required (e.g. bestvideo+bestaudio), output to given container format (e.g. mkv, mp4, ogg, webm, flv) ' + 'Ignored if no merge is required')) subtitles = optparse.OptionGroup(parser, 'Subtitle Options') subtitles.add_option( |