aboutsummaryrefslogtreecommitdiff
path: root/youtube_dl/postprocessor
diff options
context:
space:
mode:
authordirkf <fieldhouse@gmx.net>2024-03-03 12:38:00 +0000
committerdirkf <fieldhouse@gmx.net>2024-03-27 13:11:17 +0000
commit21792b88b791b16e3ab0a0fb2e26e5bb8a4e2ff3 (patch)
tree9bba85e51064a62cb17701ad9038ffdd7c2afb79 /youtube_dl/postprocessor
parentd8f134a664d7be2c10aba44fc2d54a8f7b0542ff (diff)
downloadyoutube-dl-21792b88b791b16e3ab0a0fb2e26e5bb8a4e2ff3.tar.xz
[external/FFmpeg] Fix and improve --ffmpeg-location handling
* pass YoutubeDL (FileDownloader) to FFmpegPostProcessor constructor * consolidate path search in FFmpegPostProcessor * make availability of FFmpegFD depend on existence of FFmpegPostProcessor * detect ffmpeg executable on instantiation of FFmpegFD * resolves #32735
Diffstat (limited to 'youtube_dl/postprocessor')
-rw-r--r--youtube_dl/postprocessor/ffmpeg.py38
1 files changed, 12 insertions, 26 deletions
diff --git a/youtube_dl/postprocessor/ffmpeg.py b/youtube_dl/postprocessor/ffmpeg.py
index 801160e6c..e5ffdf378 100644
--- a/youtube_dl/postprocessor/ffmpeg.py
+++ b/youtube_dl/postprocessor/ffmpeg.py
@@ -96,6 +96,7 @@ class FFmpegPostProcessor(PostProcessor):
self._paths = None
self._versions = None
+ location = None
if self._downloader:
prefer_ffmpeg = self._downloader.params.get('prefer_ffmpeg', True)
location = self._downloader.params.get('ffmpeg_location')
@@ -118,32 +119,17 @@ class FFmpegPostProcessor(PostProcessor):
location = os.path.dirname(os.path.abspath(location))
if basename in ('ffmpeg', 'ffprobe'):
prefer_ffmpeg = True
-
- self._paths = dict(
- (p, os.path.join(location, p)) for p in programs)
- self._versions = dict(
- (p, get_ffmpeg_version(self._paths[p])) for p in programs)
- if self._versions is None:
- self._versions = dict(
- (p, get_ffmpeg_version(p)) for p in programs)
- self._paths = dict((p, p) for p in programs)
-
- if prefer_ffmpeg is False:
- prefs = ('avconv', 'ffmpeg')
- else:
- prefs = ('ffmpeg', 'avconv')
- for p in prefs:
- if self._versions[p]:
- self.basename = p
- break
-
- if prefer_ffmpeg is False:
- prefs = ('avprobe', 'ffprobe')
- else:
- prefs = ('ffprobe', 'avprobe')
- for p in prefs:
- if self._versions[p]:
- self.probe_basename = p
+ self._paths = dict(
+ (p, p if location is None else os.path.join(location, p))
+ for p in programs)
+ self._versions = dict(
+ x for x in (
+ (p, get_ffmpeg_version(self._paths[p])) for p in programs)
+ if x[1] is not None)
+
+ for p in ('ffmpeg', 'avconv')[::-1 if prefer_ffmpeg is False else 1]:
+ if self._versions.get(p):
+ self.basename = self.probe_basename = p
break
@property