diff --git a/src/you_get/processor/ffmpeg.py b/src/you_get/processor/ffmpeg.py index 51cc51dda5998dc5d7011266689f42284758e8ba..8bdf77d2906b2a557a8282248030d09fcfdabb7d 100755 --- a/src/you_get/processor/ffmpeg.py +++ b/src/you_get/processor/ffmpeg.py @@ -1,7 +1,7 @@ #!/usr/bin/env python import logging -import os.path +import os import subprocess import sys from ..util.strings import parameterize @@ -61,7 +61,23 @@ def ffmpeg_concat_av(files, output, ext): if os.path.isfile(file): params.extend(['-i', file]) params.extend(['-c', 'copy']) params.append(output) - return subprocess.call(params, stdin=STDIN) + if subprocess.call(params, stdin=STDIN): + print('Merging without re-encode failed.\nTry again re-encoding audio... ', end="", flush=True) + try: os.remove(output) + except FileNotFoundError: pass + params = [FFMPEG] + LOGLEVEL + for file in files: + if os.path.isfile(file): params.extend(['-i', file]) + params.extend(['-c:v', 'copy']) + if ext == 'mp4': + params.extend(['-c:a', 'aac']) + params.extend(['-strict', 'experimental']) + elif ext == 'webm': + params.extend(['-c:a', 'opus']) + params.append(output) + return subprocess.call(params, stdin=STDIN) + else: + return 0 def ffmpeg_convert_ts_to_mkv(files, output='output.mkv'): for file in files: