diff options
-rw-r--r-- | youtube_dl/PostProcessor.py | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/youtube_dl/PostProcessor.py b/youtube_dl/PostProcessor.py index a04828518..d7c7346d7 100644 --- a/youtube_dl/PostProcessor.py +++ b/youtube_dl/PostProcessor.py @@ -86,7 +86,7 @@ class FFmpegExtractAudioPP(PostProcessor): def get_audio_codec(self, path): if not self._exes['ffprobe'] and not self._exes['avprobe']: return None try: - cmd = [self._exes['avprobe'] or self._exes['ffprobe'], '-show_streams', '--', encodeFilename(path)] + cmd = [self._exes['avprobe'] or self._exes['ffprobe'], '-show_streams', encodeFilename(self._ffmpeg_filename_argument(path))] handle = subprocess.Popen(cmd, stderr=compat_subprocess_get_DEVNULL(), stdout=subprocess.PIPE) output = handle.communicate()[0] if handle.wait() != 0: @@ -110,7 +110,7 @@ class FFmpegExtractAudioPP(PostProcessor): acodec_opts = ['-acodec', codec] cmd = ([self._exes['avconv'] or self._exes['ffmpeg'], '-y', '-i', encodeFilename(path), '-vn'] + acodec_opts + more_opts + - ['--', encodeFilename(out_path)]) + [encodeFilename(self._ffmpeg_filename_argument(out_path))]) p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) stdout,stderr = p.communicate() if p.returncode != 0: @@ -202,3 +202,10 @@ class FFmpegExtractAudioPP(PostProcessor): information['filepath'] = new_path return information + + def _ffmpeg_filename_argument(self, fn): + # ffmpeg broke --, see https://ffmpeg.org/trac/ffmpeg/ticket/2127 for details + if fn.startswith(u'-'): + return u'./' + fn + return fn + |