aboutsummaryrefslogtreecommitdiffstats
path: root/yt_dlp/postprocessor/ffmpeg.py
diff options
context:
space:
mode:
authorCrypticSignal <hshafiq@hotmail.co.uk>2021-11-04 02:23:40 +0530
committerpukkandan <pukkandan.ytdlp@gmail.com>2021-11-04 02:23:45 +0530
commit673c0057e81410b3da2b0c07ebf7abca13286eab (patch)
treebcf6ede400ea3bce4c4506d480a80e152544641e /yt_dlp/postprocessor/ffmpeg.py
parent9af98e17bd2b761d304e88a359b0f7a40e6c0a67 (diff)
downloadhypervideo-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.py7
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':