]> jfr.im git - yt-dlp.git/commitdiff
Validate `--merge-output-format`
authorpukkandan <redacted>
Sat, 30 Jul 2022 20:05:56 +0000 (01:35 +0530)
committerpukkandan <redacted>
Sat, 30 Jul 2022 20:50:14 +0000 (02:20 +0530)
Closes #4489

README.md
yt_dlp/__init__.py
yt_dlp/options.py
yt_dlp/postprocessor/ffmpeg.py

index 607e9298909542db739928de47e46f38764fd66f..7b416f39a7fea7c7e8ff84719b868d392ae52cf9 100644 (file)
--- a/README.md
+++ b/README.md
@@ -859,10 +859,10 @@ ## Video Format Options:
                                     downloadable
     -F, --list-formats              List available formats of each video.
                                     Simulate unless --no-simulate is used
-    --merge-output-format FORMAT    If a merge is required (e.g.
-                                    bestvideo+bestaudio), output to given
-                                    container format. One of mkv, mp4, ogg,
-                                    webm, flv. Ignored if no merge is required
+    --merge-output-format FORMAT    Container to use when merging formats (e.g.
+                                    bestvideo+bestaudio). Ignored if no merge is
+                                    required. (currently supported: avi, flv,
+                                    mkv, mov, mp4, webm)
 
 ## Subtitle Options:
     --write-subs                    Write subtitle file
index 0bff4e7c8289cc9b73610e911a5b70eef85b2a63..c106c0ae7541b1e15dbab60d5686f5c68a803982 100644 (file)
@@ -20,6 +20,7 @@
 from .options import parseOpts
 from .postprocessor import (
     FFmpegExtractAudioPP,
+    FFmpegMergerPP,
     FFmpegPostProcessor,
     FFmpegSubtitlesConvertorPP,
     FFmpegThumbnailsConvertorPP,
@@ -223,6 +224,7 @@ def validate_minmax(min_val, max_val, min_name, max_name=None):
         validate_regex('format sorting', f, InfoExtractor.FormatSort.regex)
 
     # Postprocessor formats
+    validate_in('merge output format', opts.merge_output_format, FFmpegMergerPP.SUPPORTED_EXTS)
     validate_regex('audio format', opts.audioformat, FFmpegExtractAudioPP.FORMAT_RE)
     validate_in('subtitle format', opts.convertsubtitles, FFmpegSubtitlesConvertorPP.SUPPORTED_EXTS)
     validate_regex('thumbnail format', opts.convertthumbnails, FFmpegThumbnailsConvertorPP.FORMAT_RE)
index 43d1af96df18deab89ad4c69f97c17cb8a857589..be53ad3e3c99636b4dafe19eee201526ae240b40 100644 (file)
@@ -13,6 +13,7 @@
 from .downloader.external import list_external_downloaders
 from .postprocessor import (
     FFmpegExtractAudioPP,
+    FFmpegMergerPP,
     FFmpegSubtitlesConvertorPP,
     FFmpegThumbnailsConvertorPP,
     FFmpegVideoRemuxerPP,
@@ -781,9 +782,8 @@ def _alias_callback(option, opt_str, value, parser, opts, nargs):
         '--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. One of mkv, mp4, ogg, webm, flv. '
-            'Ignored if no merge is required'))
+            'Container to use when merging formats (e.g. bestvideo+bestaudio). Ignored if no merge is required. '
+            f'(currently supported: {", ".join(sorted(FFmpegMergerPP.SUPPORTED_EXTS))})'))
     video_format.add_option(
         '--allow-unplayable-formats',
         action='store_true', dest='allow_unplayable_formats', default=False,
index c4dc99fe875e47c587a614be9439cb9611a96313..f8083896274f2750ac4f54d22be95ffa3f83e703 100644 (file)
@@ -801,6 +801,8 @@ def _get_infojson_opts(self, info, infofn):
 
 
 class FFmpegMergerPP(FFmpegPostProcessor):
+    SUPPORTED_EXTS = MEDIA_EXTENSIONS.common_video
+
     @PostProcessor._restrict_to(images=False)
     def run(self, info):
         filename = info['filepath']