diff options
author | CrypticSignal <hshafiq@hotmail.co.uk> | 2021-11-04 02:23:40 +0530 |
---|---|---|
committer | pukkandan <pukkandan.ytdlp@gmail.com> | 2021-11-04 02:23:45 +0530 |
commit | 673c0057e81410b3da2b0c07ebf7abca13286eab (patch) | |
tree | bcf6ede400ea3bce4c4506d480a80e152544641e /yt_dlp/postprocessor/ffmpeg.py | |
parent | 9af98e17bd2b761d304e88a359b0f7a40e6c0a67 (diff) | |
download | hypervideo-pre-673c0057e81410b3da2b0c07ebf7abca13286eab.tar.lz hypervideo-pre-673c0057e81410b3da2b0c07ebf7abca13286eab.tar.xz hypervideo-pre-673c0057e81410b3da2b0c07ebf7abca13286eab.zip |
[ExtractAudio] Use `libfdk_aac` if available
Closes #1502
Authored by: CrypticSignal
Diffstat (limited to 'yt_dlp/postprocessor/ffmpeg.py')
-rw-r--r-- | yt_dlp/postprocessor/ffmpeg.py | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/yt_dlp/postprocessor/ffmpeg.py b/yt_dlp/postprocessor/ffmpeg.py index c2415c59a..3f82eabf5 100644 --- a/yt_dlp/postprocessor/ffmpeg.py +++ b/yt_dlp/postprocessor/ffmpeg.py @@ -99,7 +99,7 @@ class FFmpegPostProcessor(PostProcessor): if prog != 'ffmpeg' or not out: return - # TODO: Feature detection + self._features['fdk'] = '--enable-libfdk-aac' in out self.basename = None self.probe_basename = None @@ -391,6 +391,7 @@ class FFmpegExtractAudioPP(FFmpegPostProcessor): # Experimentally, with values over 4, bitrate changes were minimal or non-existent 'aac': (0.1, 4), 'vorbis': (0, 10), + 'libfdk_aac': (1, 5), 'opus': None, # doesn't support -q:a 'wav': None, 'flac': None, @@ -399,6 +400,8 @@ class FFmpegExtractAudioPP(FFmpegPostProcessor): return [] q = limits[1] + (limits[0] - limits[1]) * (self._preferredquality / 10) + if codec == 'libfdk_aac': + return ['-vbr', f'{int(q)}'] return ['-q:a', f'{q}'] def run_ffmpeg(self, path, out_path, codec, more_opts): @@ -448,6 +451,8 @@ class FFmpegExtractAudioPP(FFmpegPostProcessor): else: # We convert the audio (lossy if codec is lossy) acodec = ACODECS[self._preferredcodec] + if acodec == 'aac' and self._features.get('fdk'): + acodec = 'libfdk_aac' extension = self._preferredcodec more_opts = self._quality_args(acodec) if self._preferredcodec == 'aac': |