mirror of
				https://gitlab.com/ytdl-org/youtube-dl.git
				synced 2025-11-04 00:57:07 -05:00 
			
		
		
		
	[postprocessor/ffmpeg] Add support for flac
Requested at http://stackoverflow.com/q/42828041/35070
This commit is contained in:
		@@ -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')
 | 
			
		||||
 
 | 
			
		||||
@@ -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:
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user