]> jfr.im git - yt-dlp.git/blobdiff - yt_dlp/postprocessor/ffmpeg.py
[ffmpeg] Smarter detection of ffprobe filename
[yt-dlp.git] / yt_dlp / postprocessor / ffmpeg.py
index f663cc28e2d1f88cfc706135f6c7701075f3c4e8..6a0a8220ba777f5cfcbfcddf8659bcdeefa7e1ab 100644 (file)
@@ -113,15 +113,20 @@ def _determine_executables(self):
                 f'ffmpeg-location {location} does not exist! Continuing without ffmpeg', only_once=True)
             return {}
         elif os.path.isdir(location):
-            dirname, basename = location, None
+            dirname, basename, filename = location, None, None
         else:
-            basename = os.path.splitext(os.path.basename(location))[0]
-            basename = next((p for p in programs if basename.startswith(p)), 'ffmpeg')
+            filename = os.path.basename(location)
+            basename = next((p for p in programs if p in filename), 'ffmpeg')
             dirname = os.path.dirname(os.path.abspath(location))
             if basename in self._ffmpeg_to_avconv.keys():
                 self._prefer_ffmpeg = True
 
         paths = {p: os.path.join(dirname, p) for p in programs}
+        if basename and basename in filename:
+            for p in programs:
+                path = os.path.join(dirname, filename.replace(basename, p))
+                if os.path.exists(path):
+                    paths[p] = path
         if basename:
             paths[basename] = location
         return paths