From c3029c4468a949b55aad57eb0ddee6d7fd8766a2 Mon Sep 17 00:00:00 2001 From: Hattshire Date: Tue, 26 Feb 2019 16:31:00 -0300 Subject: [PATCH 1/4] Handle Opus bitrate when quality is specified instead of bitrate --- youtube_dl/postprocessor/ffmpeg.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/youtube_dl/postprocessor/ffmpeg.py b/youtube_dl/postprocessor/ffmpeg.py index 5bcb00ac0..90e421d9b 100644 --- a/youtube_dl/postprocessor/ffmpeg.py +++ b/youtube_dl/postprocessor/ffmpeg.py @@ -307,6 +307,26 @@ class FFmpegExtractAudioPP(FFmpegPostProcessor): # The opus codec doesn't support the -aq option if int(self._preferredquality) < 10 and extension != 'opus': more_opts += ['-q:a', self._preferredquality] + else if int(self._preferredquality) < 10: + # Handle opus quality/bitrate using Xiph.org's Recommended Settings + if int(self._preferredquality) == 9: + more_opts += ['-b:a', '450k'] + else if int(self._preferredquality) == 8: + more_opts += ['-b:a', '256k'] + else if int(self._preferredquality) == 7: + more_opts += ['-b:a', '128k'] + else if int(self._preferredquality) == 6: + more_opts += ['-b:a', '96k'] + else if int(self._preferredquality) == 5: + more_opts += ['-b:a', '64k'] + else if int(self._preferredquality) == 4: + more_opts += ['-b:a', '32k'] + else if int(self._preferredquality) == 3: + more_opts += ['-b:a', '24k'] + else if int(self._preferredquality) == 2: + more_opts += ['-b:a', '10k'] + else: + more_opts += ['-b:a', '6k'] else: more_opts += ['-b:a', self._preferredquality + 'k'] if self._preferredcodec == 'aac': From 5786435e54a0d6b6784536942f92b30a37bc3bd0 Mon Sep 17 00:00:00 2001 From: Hattshire Date: Tue, 26 Feb 2019 17:02:46 -0300 Subject: [PATCH 2/4] Check style convention with flake8 before pull-requesting. --- youtube_dl/postprocessor/ffmpeg.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/youtube_dl/postprocessor/ffmpeg.py b/youtube_dl/postprocessor/ffmpeg.py index 90e421d9b..536711f05 100644 --- a/youtube_dl/postprocessor/ffmpeg.py +++ b/youtube_dl/postprocessor/ffmpeg.py @@ -307,23 +307,23 @@ class FFmpegExtractAudioPP(FFmpegPostProcessor): # The opus codec doesn't support the -aq option if int(self._preferredquality) < 10 and extension != 'opus': more_opts += ['-q:a', self._preferredquality] - else if int(self._preferredquality) < 10: + elif int(self._preferredquality) < 10: # Handle opus quality/bitrate using Xiph.org's Recommended Settings - if int(self._preferredquality) == 9: + if int(self._preferredquality) == 9: more_opts += ['-b:a', '450k'] - else if int(self._preferredquality) == 8: + elif int(self._preferredquality) == 8: more_opts += ['-b:a', '256k'] - else if int(self._preferredquality) == 7: + elif int(self._preferredquality) == 7: more_opts += ['-b:a', '128k'] - else if int(self._preferredquality) == 6: + elif int(self._preferredquality) == 6: more_opts += ['-b:a', '96k'] - else if int(self._preferredquality) == 5: + elif int(self._preferredquality) == 5: more_opts += ['-b:a', '64k'] - else if int(self._preferredquality) == 4: + elif int(self._preferredquality) == 4: more_opts += ['-b:a', '32k'] - else if int(self._preferredquality) == 3: + elif int(self._preferredquality) == 3: more_opts += ['-b:a', '24k'] - else if int(self._preferredquality) == 2: + elif int(self._preferredquality) == 2: more_opts += ['-b:a', '10k'] else: more_opts += ['-b:a', '6k'] From 1a7a6846e2a808f6a99c374bd9b2dfd7d1dbae70 Mon Sep 17 00:00:00 2001 From: Hattshire Date: Tue, 26 Feb 2019 17:39:45 -0300 Subject: [PATCH 3/4] Removing duplicated code. --- youtube_dl/postprocessor/ffmpeg.py | 28 ++++++++-------------------- 1 file changed, 8 insertions(+), 20 deletions(-) diff --git a/youtube_dl/postprocessor/ffmpeg.py b/youtube_dl/postprocessor/ffmpeg.py index 536711f05..4cb577b68 100644 --- a/youtube_dl/postprocessor/ffmpeg.py +++ b/youtube_dl/postprocessor/ffmpeg.py @@ -304,31 +304,19 @@ class FFmpegExtractAudioPP(FFmpegPostProcessor): extension = self._preferredcodec more_opts = [] if self._preferredquality is not None: + preferredquality = int(self._preferredquality) # The opus codec doesn't support the -aq option - if int(self._preferredquality) < 10 and extension != 'opus': + if preferredquality < 10 and extension != 'opus': more_opts += ['-q:a', self._preferredquality] - elif int(self._preferredquality) < 10: + elif preferredquality < 10 and preferredquality >= 0: # Handle opus quality/bitrate using Xiph.org's Recommended Settings - if int(self._preferredquality) == 9: - more_opts += ['-b:a', '450k'] - elif int(self._preferredquality) == 8: - more_opts += ['-b:a', '256k'] - elif int(self._preferredquality) == 7: - more_opts += ['-b:a', '128k'] - elif int(self._preferredquality) == 6: - more_opts += ['-b:a', '96k'] - elif int(self._preferredquality) == 5: - more_opts += ['-b:a', '64k'] - elif int(self._preferredquality) == 4: - more_opts += ['-b:a', '32k'] - elif int(self._preferredquality) == 3: - more_opts += ['-b:a', '24k'] - elif int(self._preferredquality) == 2: - more_opts += ['-b:a', '10k'] - else: - more_opts += ['-b:a', '6k'] + opus_bitrate_list = [ + '6k', '6k', '10k', '24k', '32k', '64k', '96k', '128k', '256k', '450k' + ] + more_opts += ['-b:a', opus_bitrate_list[preferredquality]] else: more_opts += ['-b:a', self._preferredquality + 'k'] + if self._preferredcodec == 'aac': more_opts += ['-f', 'adts'] if self._preferredcodec == 'm4a': From a2d641d6953abb07035cdf02f7ffcc7d55352dec Mon Sep 17 00:00:00 2001 From: Hattshire Date: Tue, 26 Feb 2019 20:48:13 -0300 Subject: [PATCH 4/4] Correct inverse opus quality order. --- youtube_dl/postprocessor/ffmpeg.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/youtube_dl/postprocessor/ffmpeg.py b/youtube_dl/postprocessor/ffmpeg.py index 4cb577b68..1bf6c49b4 100644 --- a/youtube_dl/postprocessor/ffmpeg.py +++ b/youtube_dl/postprocessor/ffmpeg.py @@ -311,7 +311,7 @@ class FFmpegExtractAudioPP(FFmpegPostProcessor): elif preferredquality < 10 and preferredquality >= 0: # Handle opus quality/bitrate using Xiph.org's Recommended Settings opus_bitrate_list = [ - '6k', '6k', '10k', '24k', '32k', '64k', '96k', '128k', '256k', '450k' + '450k', '256k', '160k', '128k', '96k', '64k', '32k', '24k', '10k', '6k' ] more_opts += ['-b:a', opus_bitrate_list[preferredquality]] else: