[postprocessor/ffmpeg] sanitize ffmpeg version for Ubuntu and Arch Linux systems...
authorRemita Amine <remitamine@gmail.com>
Fri, 11 Jan 2019 14:09:44 +0000 (15:09 +0100)
committerRemita Amine <remitamine@gmail.com>
Fri, 11 Jan 2019 14:12:10 +0000 (15:12 +0100)
youtube_dl/postprocessor/ffmpeg.py

index efcd39d5729da3dab53ac04734a2303761830f45..173bdbe685bd96cbf8366a98afdab4abd4e2d7cc 100644 (file)
@@ -79,6 +79,19 @@ class FFmpegPostProcessor(PostProcessor):
         programs = ['avprobe', 'avconv', 'ffmpeg', 'ffprobe']
         prefer_ffmpeg = True
 
+        def get_ffmpeg_version(path):
+            ver = get_exe_version(path, args=['-version'])
+            if ver:
+                regexs = [
+                    r'([0-9.]+)-0ubuntu0\.[0-9.]+$', # Ubuntu
+                    r'n([0-9.]+)$', # Arch Linux
+                ]
+                for regex in regexs:
+                    mobj = re.match(regex, ver)
+                    if mobj:
+                        ver = mobj.group(1)
+            return ver
+
         self.basename = None
         self.probe_basename = None
 
@@ -110,11 +123,10 @@ class FFmpegPostProcessor(PostProcessor):
                 self._paths = dict(
                     (p, os.path.join(location, p)) for p in programs)
                 self._versions = dict(
-                    (p, get_exe_version(self._paths[p], args=['-version']))
-                    for p in programs)
+                    (p, get_ffmpeg_version(self._paths[p])) for p in programs)
         if self._versions is None:
             self._versions = dict(
-                (p, get_exe_version(p, args=['-version'])) for p in programs)
+                (p, get_ffmpeg_version(p)) for p in programs)
             self._paths = dict((p, p) for p in programs)
 
         if prefer_ffmpeg is False: