[postprocessor/ffmpeg] Add support for flac
Requested at http://stackoverflow.com/q/42828041/35070main
parent
b51dc9db0e
commit
21bfcd3d6e
|
@ -196,7 +196,7 @@ def _real_main(argv=None):
|
||||||
if opts.playlistend not in (-1, None) and opts.playlistend < opts.playliststart:
|
if opts.playlistend not in (-1, None) and opts.playlistend < opts.playliststart:
|
||||||
raise ValueError('Playlist end must be greater than playlist start')
|
raise ValueError('Playlist end must be greater than playlist start')
|
||||||
if opts.extractaudio:
|
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')
|
parser.error('invalid audio format specified')
|
||||||
if opts.audioquality:
|
if opts.audioquality:
|
||||||
opts.audioquality = opts.audioquality.strip('k').strip('K')
|
opts.audioquality = opts.audioquality.strip('k').strip('K')
|
||||||
|
|
|
@ -26,15 +26,25 @@ from ..utils import (
|
||||||
|
|
||||||
|
|
||||||
EXT_TO_OUT_FORMATS = {
|
EXT_TO_OUT_FORMATS = {
|
||||||
"aac": "adts",
|
'aac': 'adts',
|
||||||
"m4a": "ipod",
|
'flac': 'flac',
|
||||||
"mka": "matroska",
|
'm4a': 'ipod',
|
||||||
"mkv": "matroska",
|
'mka': 'matroska',
|
||||||
"mpg": "mpeg",
|
'mkv': 'matroska',
|
||||||
"ogv": "ogg",
|
'mpg': 'mpeg',
|
||||||
"ts": "mpegts",
|
'ogv': 'ogg',
|
||||||
"wma": "asf",
|
'ts': 'mpegts',
|
||||||
"wmv": "asf",
|
'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'
|
acodec = 'copy'
|
||||||
extension = 'm4a'
|
extension = 'm4a'
|
||||||
more_opts = ['-bsf:a', 'aac_adtstoasc']
|
more_opts = ['-bsf:a', 'aac_adtstoasc']
|
||||||
elif filecodec in ['aac', 'mp3', 'vorbis', 'opus']:
|
elif filecodec in ['aac', 'flac', 'mp3', 'vorbis', 'opus']:
|
||||||
# Lossless if possible
|
# Lossless if possible
|
||||||
acodec = 'copy'
|
acodec = 'copy'
|
||||||
extension = filecodec
|
extension = filecodec
|
||||||
|
@ -256,8 +266,8 @@ class FFmpegExtractAudioPP(FFmpegPostProcessor):
|
||||||
else:
|
else:
|
||||||
more_opts += ['-b:a', self._preferredquality + 'k']
|
more_opts += ['-b:a', self._preferredquality + 'k']
|
||||||
else:
|
else:
|
||||||
# We convert the audio (lossy)
|
# We convert the audio (lossy if codec is lossy)
|
||||||
acodec = {'mp3': 'libmp3lame', 'aac': 'aac', 'm4a': 'aac', 'opus': 'opus', 'vorbis': 'libvorbis', 'wav': None}[self._preferredcodec]
|
acodec = ACODECS[self._preferredcodec]
|
||||||
extension = self._preferredcodec
|
extension = self._preferredcodec
|
||||||
more_opts = []
|
more_opts = []
|
||||||
if self._preferredquality is not None:
|
if self._preferredquality is not None:
|
||||||
|
|
Loading…
Reference in New Issue