From b0e87c311078cf8510c720d50d4960a87f43296b Mon Sep 17 00:00:00 2001 From: Philipp Hagemeister Date: Fri, 9 Jan 2015 19:02:06 +0100 Subject: [PATCH] [ffmpeg] Correctly encode paths on Windows On Python 2.x on Windows, if there are any unicode arguments in the command argument list, the whole list is converted to unicode internally. Therefore, we need to call encodeArgument on every argument. Fixes #4337 and #4668. --- youtube_dl/postprocessor/ffmpeg.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/youtube_dl/postprocessor/ffmpeg.py b/youtube_dl/postprocessor/ffmpeg.py index 473536dcc..d1b342c7a 100644 --- a/youtube_dl/postprocessor/ffmpeg.py +++ b/youtube_dl/postprocessor/ffmpeg.py @@ -80,8 +80,9 @@ def run_ffmpeg_multiple_files(self, input_paths, out_path, opts): files_cmd = [] for path in input_paths: - files_cmd.extend(['-i', encodeFilename(path, True)]) - cmd = ([self._executable, '-y'] + files_cmd + files_cmd.extend([encodeArgument('-i'), encodeFilename(path, True)]) + cmd = ([encodeFilename(self._executable, True), encodeArgument('-y')] + + files_cmd + [encodeArgument(o) for o in opts] + [encodeFilename(self._ffmpeg_filename_argument(out_path), True)]) @@ -122,8 +123,8 @@ def get_audio_codec(self, path): raise PostProcessingError('ffprobe or avprobe not found. Please install one.') try: cmd = [ - self._probe_executable, - '-show_streams', + encodeFilename(self._probe_executable, True), + encodeArgument('-show_streams'), encodeFilename(self._ffmpeg_filename_argument(path), True)] handle = subprocess.Popen(cmd, stderr=compat_subprocess_get_DEVNULL(), stdout=subprocess.PIPE) output = handle.communicate()[0]