From 7e4807e7eef6f3e40b5a297334d35ac1f25d158a Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Mon, 2 Nov 2020 19:13:48 +0100 Subject: [PATCH] path to ffmpeg tools has always quotes to make sure spaces won't cause unnecessary behavior --- pype/lib.py | 2 +- pype/plugins/global/publish/extract_jpeg.py | 2 +- pype/plugins/global/publish/extract_review.py | 4 ++-- pype/plugins/global/publish/extract_review_slate.py | 2 +- pype/plugins/global/publish/validate_ffmpeg_installed.py | 2 +- pype/plugins/harmony/publish/extract_render.py | 2 +- pype/plugins/hiero/publish/extract_review_cutup.py | 9 +++++---- pype/plugins/photoshop/publish/extract_review.py | 2 +- .../standalonepublisher/publish/extract_shot_data.py | 2 +- .../standalonepublisher/publish/extract_thumbnail.py | 2 +- pype/scripts/otio_burnin.py | 4 ++-- .../tools/standalonepublish/widgets/widget_drop_frame.py | 2 +- 12 files changed, 18 insertions(+), 17 deletions(-) diff --git a/pype/lib.py b/pype/lib.py index afcfa98307..026f917dcb 100644 --- a/pype/lib.py +++ b/pype/lib.py @@ -1397,7 +1397,7 @@ def ffprobe_streams(path_to_file): "Getting information about input \"{}\".".format(path_to_file) ) args = [ - get_ffmpeg_tool_path("ffprobe"), + "\"{}\"".format(get_ffmpeg_tool_path("ffprobe")), "-v quiet", "-print_format json", "-show_format", diff --git a/pype/plugins/global/publish/extract_jpeg.py b/pype/plugins/global/publish/extract_jpeg.py index dd822e9d56..551e57796a 100644 --- a/pype/plugins/global/publish/extract_jpeg.py +++ b/pype/plugins/global/publish/extract_jpeg.py @@ -72,7 +72,7 @@ class ExtractJpegEXR(pyblish.api.InstancePlugin): ffmpeg_args = self.ffmpeg_args or {} jpeg_items = [] - jpeg_items.append(ffmpeg_path) + jpeg_items.append("\"{}\"".format(ffmpeg_path)) # override file if already exists jpeg_items.append("-y") # use same input args like with mov diff --git a/pype/plugins/global/publish/extract_review.py b/pype/plugins/global/publish/extract_review.py index 06b9d177f1..70f2db9283 100644 --- a/pype/plugins/global/publish/extract_review.py +++ b/pype/plugins/global/publish/extract_review.py @@ -449,7 +449,7 @@ class ExtractReview(pyblish.api.InstancePlugin): audio_filters.append(arg) all_args = [] - all_args.append(self.ffmpeg_path) + all_args.append("\"{}\"".format(self.ffmpeg_path)) all_args.extend(input_args) if video_filters: all_args.append("-filter:v {}".format(",".join(video_filters))) @@ -1526,7 +1526,7 @@ class ExtractReview(pyblish.api.InstancePlugin): os.mkdir(stg_dir) mov_args = [ - ffmpeg_path, + "\"{}\"".format(ffmpeg_path), " ".join(input_args), " ".join(output_args) ] diff --git a/pype/plugins/global/publish/extract_review_slate.py b/pype/plugins/global/publish/extract_review_slate.py index 2e1fc25ae5..e549815187 100644 --- a/pype/plugins/global/publish/extract_review_slate.py +++ b/pype/plugins/global/publish/extract_review_slate.py @@ -178,7 +178,7 @@ class ExtractReviewSlate(pype.api.Extractor): _remove_at_end.append(slate_v_path) slate_args = [ - ffmpeg_path, + "\"{}\"".format(ffmpeg_path), " ".join(input_args), " ".join(output_args) ] diff --git a/pype/plugins/global/publish/validate_ffmpeg_installed.py b/pype/plugins/global/publish/validate_ffmpeg_installed.py index 61127ff96e..2e49650040 100644 --- a/pype/plugins/global/publish/validate_ffmpeg_installed.py +++ b/pype/plugins/global/publish/validate_ffmpeg_installed.py @@ -29,6 +29,6 @@ class ValidateFFmpegInstalled(pyblish.api.ContextPlugin): def process(self, context): ffmpeg_path = pype.lib.get_ffmpeg_tool_path("ffmpeg") self.log.info("ffmpeg path: `{}`".format(ffmpeg_path)) - if self.is_tool(ffmpeg_path) is False: + if self.is_tool("\"{}\"".format(ffmpeg_path)) is False: self.log.error("ffmpeg not found in PATH") raise RuntimeError('ffmpeg not installed.') diff --git a/pype/plugins/harmony/publish/extract_render.py b/pype/plugins/harmony/publish/extract_render.py index 98a47de2f6..7fb8ae79d2 100644 --- a/pype/plugins/harmony/publish/extract_render.py +++ b/pype/plugins/harmony/publish/extract_render.py @@ -90,7 +90,7 @@ class ExtractRender(pyblish.api.InstancePlugin): thumbnail_path = os.path.join(path, "thumbnail.png") ffmpeg_path = pype.lib.get_ffmpeg_tool_path("ffmpeg") args = [ - ffmpeg_path, "-y", + "\"{}\"".format(ffmpeg_path), "-y", "-i", os.path.join(path, list(collections[0])[0]), "-vf", "scale=300:-1", "-vframes", "1", diff --git a/pype/plugins/hiero/publish/extract_review_cutup.py b/pype/plugins/hiero/publish/extract_review_cutup.py index 88b19b7ec8..ace6bc88d3 100644 --- a/pype/plugins/hiero/publish/extract_review_cutup.py +++ b/pype/plugins/hiero/publish/extract_review_cutup.py @@ -130,8 +130,8 @@ class ExtractReviewCutUp(pype.api.Extractor): # check if audio stream is in input video file ffprob_cmd = ( - "{ffprobe_path} -i \"{full_input_path}\" -show_streams " - "-select_streams a -loglevel error" + "\"{ffprobe_path}\" -i \"{full_input_path}\" -show_streams" + " -select_streams a -loglevel error" ).format(**locals()) self.log.debug("ffprob_cmd: {}".format(ffprob_cmd)) @@ -171,7 +171,8 @@ class ExtractReviewCutUp(pype.api.Extractor): # try to get video native resolution data try: resolution_output = pype.api.subprocess(( - "{ffprobe_path} -i \"{full_input_path}\" -v error " + "\"{ffprobe_path}\" -i \"{full_input_path}\"" + " -v error " "-select_streams v:0 -show_entries " "stream=width,height -of csv=s=x:p=0" ).format(**locals())) @@ -274,7 +275,7 @@ class ExtractReviewCutUp(pype.api.Extractor): output_args.append("-y \"{}\"".format(full_output_path)) mov_args = [ - ffmpeg_path, + "\"{}\"".format(ffmpeg_path), " ".join(input_args), " ".join(output_args) ] diff --git a/pype/plugins/photoshop/publish/extract_review.py b/pype/plugins/photoshop/publish/extract_review.py index 6fb50bba9f..b4651897c9 100644 --- a/pype/plugins/photoshop/publish/extract_review.py +++ b/pype/plugins/photoshop/publish/extract_review.py @@ -56,7 +56,7 @@ class ExtractReview(pype.api.Extractor): # Generate thumbnail. thumbnail_path = os.path.join(staging_dir, "thumbnail.jpg") args = [ - ffmpeg_path, "-y", + "\"{}\"".format(ffmpeg_path), "-y", "-i", output_image_path, "-vf", "scale=300:-1", "-vframes", "1", diff --git a/pype/plugins/standalonepublisher/publish/extract_shot_data.py b/pype/plugins/standalonepublisher/publish/extract_shot_data.py index d5af7638ee..e4eb813bae 100644 --- a/pype/plugins/standalonepublisher/publish/extract_shot_data.py +++ b/pype/plugins/standalonepublisher/publish/extract_shot_data.py @@ -47,7 +47,7 @@ class ExtractShotData(pype.api.Extractor): start += 0.5 args = [ - ffmpeg_path, + "\"{}\"".format(ffmpeg_path), "-ss", str(start / fps), "-i", f"\"{video_file_path}\"", "-t", str(dur / fps) diff --git a/pype/plugins/standalonepublisher/publish/extract_thumbnail.py b/pype/plugins/standalonepublisher/publish/extract_thumbnail.py index fca4039d0e..cabb8be61e 100644 --- a/pype/plugins/standalonepublisher/publish/extract_thumbnail.py +++ b/pype/plugins/standalonepublisher/publish/extract_thumbnail.py @@ -75,7 +75,7 @@ class ExtractThumbnailSP(pyblish.api.InstancePlugin): ffmpeg_args = self.ffmpeg_args or {} jpeg_items = [] - jpeg_items.append(ffmpeg_path) + jpeg_items.append("\"{}\"".format(ffmpeg_path)) # override file if already exists jpeg_items.append("-y") # add input filters from peresets diff --git a/pype/scripts/otio_burnin.py b/pype/scripts/otio_burnin.py index 99611b172c..a14217848e 100644 --- a/pype/scripts/otio_burnin.py +++ b/pype/scripts/otio_burnin.py @@ -13,11 +13,11 @@ ffprobe_path = pype.lib.get_ffmpeg_tool_path("ffprobe") FFMPEG = ( - '{} -i "%(input)s" %(filters)s %(args)s%(output)s' + '\"{}\" -i "%(input)s" %(filters)s %(args)s%(output)s' ).format(ffmpeg_path) FFPROBE = ( - '{} -v quiet -print_format json -show_format -show_streams "%(source)s"' + '\"{}\" -v quiet -print_format json -show_format -show_streams "%(source)s"' ).format(ffprobe_path) DRAWTEXT = ( diff --git a/pype/tools/standalonepublish/widgets/widget_drop_frame.py b/pype/tools/standalonepublish/widgets/widget_drop_frame.py index a7abe1b24c..339093cf73 100644 --- a/pype/tools/standalonepublish/widgets/widget_drop_frame.py +++ b/pype/tools/standalonepublish/widgets/widget_drop_frame.py @@ -266,7 +266,7 @@ class DropDataFrame(QtWidgets.QFrame): def load_data_with_probe(self, filepath): ffprobe_path = pype.lib.get_ffmpeg_tool_path("ffprobe") args = [ - ffprobe_path, + "\"{}\"".format(ffprobe_path), '-v', 'quiet', '-print_format json', '-show_format',