aboutsummaryrefslogtreecommitdiffstats
path: root/yt_dlp/postprocessor/ffmpeg.py
diff options
context:
space:
mode:
authorJesús <heckyel@hyperbola.info>2021-12-20 11:53:26 -0500
committerJesús <heckyel@hyperbola.info>2021-12-20 11:53:26 -0500
commit65ee789d3062a5321faf0092fc2cf8ec498fc4a1 (patch)
tree72ef3e3de40dac0e03517d28eb0a2cea17f86ba4 /yt_dlp/postprocessor/ffmpeg.py
parent1abb4c89c62a9fec2e8a65c3d76d4ac0e8dd4c43 (diff)
parent0fcba15d57430e8ebfd2091463e12dfa9882cbef (diff)
downloadhypervideo-pre-65ee789d3062a5321faf0092fc2cf8ec498fc4a1.tar.lz
hypervideo-pre-65ee789d3062a5321faf0092fc2cf8ec498fc4a1.tar.xz
hypervideo-pre-65ee789d3062a5321faf0092fc2cf8ec498fc4a1.zip
updated from upstream | 20/12/2021 at 11:53
Diffstat (limited to 'yt_dlp/postprocessor/ffmpeg.py')
-rw-r--r--yt_dlp/postprocessor/ffmpeg.py25
1 files changed, 17 insertions, 8 deletions
diff --git a/yt_dlp/postprocessor/ffmpeg.py b/yt_dlp/postprocessor/ffmpeg.py
index 73bbf7fb0..594762974 100644
--- a/yt_dlp/postprocessor/ffmpeg.py
+++ b/yt_dlp/postprocessor/ffmpeg.py
@@ -294,7 +294,9 @@ class FFmpegPostProcessor(PostProcessor):
def make_args(file, args, name, number):
keys = ['_%s%d' % (name, number), '_%s' % name]
- if name == 'o' and number == 1:
+ if name == 'o':
+ args += ['-movflags', '+faststart']
+ elif number == 1:
keys.append('')
args += self._configuration_args(self.basename, keys)
if name == 'i':
@@ -368,7 +370,7 @@ class FFmpegPostProcessor(PostProcessor):
out_flags = ['-c', 'copy']
if out_file.rpartition('.')[-1] in ('mp4', 'mov'):
# For some reason, '-c copy' is not enough to copy subtitles
- out_flags.extend(['-c:s', 'mov_text', '-movflags', '+faststart'])
+ out_flags.extend(['-c:s', 'mov_text'])
try:
self.real_run_ffmpeg(
@@ -571,10 +573,7 @@ class FFmpegVideoRemuxerPP(FFmpegVideoConvertorPP):
@staticmethod
def _options(target_ext):
- options = ['-c', 'copy', '-map', '0', '-dn']
- if target_ext in ['mp4', 'm4a', 'mov']:
- options.extend(['-movflags', '+faststart'])
- return options
+ return ['-c', 'copy', '-map', '0', '-dn']
class FFmpegEmbedSubtitlePP(FFmpegPostProcessor):
@@ -909,13 +908,23 @@ class FFmpegFixupTimestampPP(FFmpegFixupPostProcessor):
return [], info
-class FFmpegFixupDurationPP(FFmpegFixupPostProcessor):
+class FFmpegCopyStreamPostProcessor(FFmpegFixupPostProcessor):
+ MESSAGE = 'Copying stream'
+
@PostProcessor._restrict_to(images=False)
def run(self, info):
- self._fixup('Fixing video duration', info['filepath'], ['-c', 'copy', '-map', '0', '-dn'])
+ self._fixup(self.MESSAGE, info['filepath'], ['-c', 'copy', '-map', '0', '-dn'])
return [], info
+class FFmpegFixupDurationPP(FFmpegCopyStreamPostProcessor):
+ MESSAGE = 'Fixing video duration'
+
+
+class FFmpegFixupDuplicateMoovPP(FFmpegCopyStreamPostProcessor):
+ MESSAGE = 'Fixing duplicate MOOV atoms'
+
+
class FFmpegSubtitlesConvertorPP(FFmpegPostProcessor):
SUPPORTED_EXTS = ('srt', 'vtt', 'ass', 'lrc')