Fix broken ffmpeg (Closes #623)
authorPhilipp Hagemeister <phihag@phihag.de>
Wed, 9 Jan 2013 13:46:19 +0000 (14:46 +0100)
committerPhilipp Hagemeister <phihag@phihag.de>
Wed, 9 Jan 2013 13:46:19 +0000 (14:46 +0100)
youtube_dl/PostProcessor.py

index a04828518b1cd141008f4dbc228ac59cc22cd780..d7c7346d7b41f7ebe7206687101a7c05c754c26b 100644 (file)
@@ -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
+