diff options
| -rw-r--r-- | youtube_dl/__init__.py | 2 | ||||
| -rw-r--r-- | youtube_dl/postprocessor/ffmpeg.py | 34 | 
2 files changed, 23 insertions, 13 deletions
| diff --git a/youtube_dl/__init__.py b/youtube_dl/__init__.py index c482f9375..2f640607f 100644 --- a/youtube_dl/__init__.py +++ b/youtube_dl/__init__.py @@ -196,7 +196,7 @@ def _real_main(argv=None):      if opts.playlistend not in (-1, None) and opts.playlistend < opts.playliststart:          raise ValueError('Playlist end must be greater than playlist start')      if opts.extractaudio: -        if opts.audioformat not in ['best', 'aac', 'mp3', 'm4a', 'opus', 'vorbis', 'wav']: +        if opts.audioformat not in ['best', 'aac', 'flac', 'mp3', 'm4a', 'opus', 'vorbis', 'wav']:              parser.error('invalid audio format specified')      if opts.audioquality:          opts.audioquality = opts.audioquality.strip('k').strip('K') diff --git a/youtube_dl/postprocessor/ffmpeg.py b/youtube_dl/postprocessor/ffmpeg.py index 96ddb3b36..7c162d92a 100644 --- a/youtube_dl/postprocessor/ffmpeg.py +++ b/youtube_dl/postprocessor/ffmpeg.py @@ -26,15 +26,25 @@ from ..utils import (  EXT_TO_OUT_FORMATS = { -    "aac": "adts", -    "m4a": "ipod", -    "mka": "matroska", -    "mkv": "matroska", -    "mpg": "mpeg", -    "ogv": "ogg", -    "ts": "mpegts", -    "wma": "asf", -    "wmv": "asf", +    'aac': 'adts', +    'flac': 'flac', +    'm4a': 'ipod', +    'mka': 'matroska', +    'mkv': 'matroska', +    'mpg': 'mpeg', +    'ogv': 'ogg', +    'ts': 'mpegts', +    'wma': 'asf', +    'wmv': 'asf', +} +ACODECS = { +    'mp3': 'libmp3lame', +    'aac': 'aac', +    'flac': 'flac', +    'm4a': 'aac', +    'opus': 'opus', +    'vorbis': 'libvorbis', +    'wav': None,  } @@ -237,7 +247,7 @@ class FFmpegExtractAudioPP(FFmpegPostProcessor):                  acodec = 'copy'                  extension = 'm4a'                  more_opts = ['-bsf:a', 'aac_adtstoasc'] -            elif filecodec in ['aac', 'mp3', 'vorbis', 'opus']: +            elif filecodec in ['aac', 'flac', 'mp3', 'vorbis', 'opus']:                  # Lossless if possible                  acodec = 'copy'                  extension = filecodec @@ -256,8 +266,8 @@ class FFmpegExtractAudioPP(FFmpegPostProcessor):                      else:                          more_opts += ['-b:a', self._preferredquality + 'k']          else: -            # We convert the audio (lossy) -            acodec = {'mp3': 'libmp3lame', 'aac': 'aac', 'm4a': 'aac', 'opus': 'opus', 'vorbis': 'libvorbis', 'wav': None}[self._preferredcodec] +            # We convert the audio (lossy if codec is lossy) +            acodec = ACODECS[self._preferredcodec]              extension = self._preferredcodec              more_opts = []              if self._preferredquality is not None: | 
