Параметры ffmpeg: -acodec libfaac -ab 192k создает файлы размером 150 Кбит?
Когда я использую ffmpeg для конвертации аудиофайла с опцией
-acodec libfaac -ab 192k
и использовать
ffmpeg -i
в этом файле впоследствии, чтобы получить информацию об аудиофайле, он говорит мне
bitrate: 152 kb/s
Почему это? Я что-то здесь скучаю? Если я хочу преобразовать файл с битрейтом 192 КБ, он должен дать мне 192 Кбит после преобразования, не так ли?
Или: Как мне получить скорость 192 кбит?
3 ответа
В настоящее время существуют гораздо лучшие кодеры aac для Linux, такие как NeroAacEnc или fdkaac, но если вы по-прежнему заинтересованы в использовании faac, есть патч, который означает, что faac может кодировать с битрейтом 192k, а также намного выше. Раньше Handbrake использовал этот патч и размещал его на своем сайте, но разработчики прекратили поддержку faac, теперь я размещаю патч здесь:
http://www.andrews-corner.org/patches/A00-bitrates.patch
Патч Faac, а затем скомпилируйте FFmpeg с --enable-libfaac, и вы можете получить aac файлы с высоким битрейтом с Faac. Вот пример кодирования с пропатченным faac, кодирование непосредственно с faac:
andrew@skamandros~/media$ faac -b 192 -o test.m4a test.wav
Freeware Advanced Audio Coder
FAAC 1.28
Average bitrate: 192 kbps
Quantization quality: 100
Bandwidth: 20872 Hz
Object type: Low Complexity(MPEG-4) + M/S
Container format: MPEG-4 File Format (MP4)
Encoding test.wav to test.m4a
frame | bitrate | elapsed/estim | play/CPU | ETA
11720/11720 (100%)| 192.0 | 21.7/21.7 | 12.52x | 0.0
andrew@skamandros~/media$
И это работает также с FFmpeg. Но сейчас определенно есть лучшие кодировщики AAC...
Рекомендации:
- Как я могу пересобрать пакет faac, чтобы получить поддержку mp4/m4a и более высокие битрейты? Руководство Askubuntu по перекомпоновке пакета faac debian для обеспечения более высоких битрейтов.
Я не могу дать дальнейших объяснений, но несколько мест (например, [ 1]) упоминают:
Обратите внимание, что максимальная средняя скорость передачи данных (которую -ab указывает в контексте libfaac) составляет 152 кбит / с. Установка этого значения будет игнорироваться и будет использоваться 152 кбит / с.
Для высоких и низких битрейтов вы должны указать другую частоту среза. без частоты среза этот пример приводит к максимальной скорости передачи битов 166 кбит / с (+ 2 кбит / с служебной информации мультиплексирования):
ffmpeg.exe -y -i input.ts -vn -c:a libfaac -ar 48k -b:a 210k out.mp4
size= 308kB time=00:00:15.01 bitrate= 168.0kbits/s
Когда я указываю частоту среза до половины частоты дискретизации, я могу подняться до 210 кбит / с
ffmpeg.exe -y -i input.ts -vn -c:a libfaac -ar 48k -b:a 210k -cutoff 24k out.mp4
size= 388kB time=00:00:15.01 bitrate= 211.7kbits/s
Аналогично, значение по умолчанию не опустится ниже 64,5 кбит / с:
ffmpeg.exe -y -i input.ts -vn -c:a libfaac -ar 48k -b:a 20k out.mp4
size= 122kB time=00:00:15.01 bitrate= 66.4kbits/s
Но если я установлю очень низкую частоту среза, я могу получить 20 кбит / с:
ffmpeg.exe -y -i input.ts -vn -c:a libfaac -ar 48k -b:a 20k -cutoff 1k out.mp4
size= 40kB time=00:00:15.01 bitrate= 21.9kbits/s
В этих примерах я использовал частоту дискретизации 48 кГц. При использовании более низкой частоты дискретизации битрейт также может быть ниже.