From 41bbb45e4c365d01b2ca8ee623b6ca04dec1f013 Mon Sep 17 00:00:00 2001 From: Clinton Hall Date: Fri, 31 May 2019 14:42:53 +1200 Subject: [PATCH] Add Piping of stderr to capture transcoding failures. #1619 --- core/transcoder.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/core/transcoder.py b/core/transcoder.py index e1850de2..2f72ce9a 100644 --- a/core/transcoder.py +++ b/core/transcoder.py @@ -605,7 +605,7 @@ def extract_subs(file, newfile_path, bitbucket): result = 1 # set result to failed in case call fails. try: proc = subprocess.Popen(command, stdout=bitbucket, stderr=bitbucket) - proc.communicate() + out, err = proc.communicate() result = proc.returncode except Exception: logger.error('Extracting subtitle has failed') @@ -928,17 +928,19 @@ def transcode_directory(dir_name): result = 1 # set result to failed in case call fails. try: if isinstance(file, string_types): - proc = subprocess.Popen(command, stdout=bitbucket, stderr=bitbucket) + proc = subprocess.Popen(command, stdout=bitbucket, subprocess.PIPE) else: img, data = next(iteritems(file)) - proc = subprocess.Popen(command, stdout=bitbucket, stderr=bitbucket, stdin=subprocess.PIPE) + proc = subprocess.Popen(command, stdout=bitbucket, stderr=subprocess.PIPE, stdin=subprocess.PIPE) for vob in data['files']: procin = zip_out(vob, img, bitbucket) if procin: logger.debug('Feeding in file: {0} to Transcoder'.format(vob)) shutil.copyfileobj(procin.stdout, proc.stdin) procin.stdout.close() - proc.communicate() + out, err = proc.communicate() + if err: + logger.error('Transcoder returned:{0} has failed'.format(err)) result = proc.returncode except Exception: logger.error('Transcoding of video {0} has failed'.format(newfile_path))