Browse Source

[ffmpeg] Correct argument encoding on Windows with Python 2.x

Fixes #2924
totalwebcasting
Philipp Hagemeister 11 years ago
parent
commit
f07b74fc18
2 changed files with 12 additions and 1 deletions
  1. +2
    -1
      youtube_dl/postprocessor/ffmpeg.py
  2. +10
    -0
      youtube_dl/utils.py

+ 2
- 1
youtube_dl/postprocessor/ffmpeg.py View File

@ -9,6 +9,7 @@ from .common import AudioConversionError, PostProcessor
from ..utils import (
check_executable,
compat_subprocess_get_DEVNULL,
encodeArgument,
encodeFilename,
PostProcessingError,
prepend_extension,
@ -48,7 +49,7 @@ class FFmpegPostProcessor(PostProcessor):
for path in input_paths:
files_cmd.extend(['-i', encodeFilename(path, True)])
cmd = ([self._get_executable(), '-y'] + files_cmd
+ opts +
+ [encodeArgument(o) for o in opts] +
[encodeFilename(self._ffmpeg_filename_argument(out_path), True)])
if self._downloader.params.get('verbose', False):


+ 10
- 0
youtube_dl/utils.py View File

@ -540,6 +540,16 @@ def encodeFilename(s, for_subprocess=False):
encoding = 'utf-8'
return s.encode(encoding, 'ignore')
def encodeArgument(s):
if not isinstance(s, compat_str):
# Legacy code that uses byte strings
# Uncomment the following line after fixing all post processors
#assert False, 'Internal error: %r should be of type %r, is %r' % (s, compat_str, type(s))
s = s.decode('ascii')
return encodeFilename(s, True)
def decodeOption(optval):
if optval is None:
return optval


Loading…
Cancel
Save