Прежде всего, -aq
устанавливает переменную скорость передачи на основе качества - я думаю, что вы ищете -ab
(обратите внимание, что я пользователь ffmpeg, поэтому мои знания о синтаксисе avconv ограничены - я понятия не имею, насколько далеко он дрейфует с вилка).
Несмотря на это, встроенный кодер AAC avconv / ffmpeg довольно плохой.
fdk_aac
Единственный действительно хороший кодировщик AAC для avconv / ffmpeg - это libfdk_aac, но лицензия на него несовместима с GPL, поэтому для получения доступа к нему вам придется скомпилировать свой собственный (это руководство по компиляции ffmpeg, так как я не Я не знаю ни одного для avconv - руководство по Ubuntu должно подойти для Debian, так как я не думаю, что там есть что-то специфичное для Ubuntu).
Получив его, следуйте руководству по кодированию AAC ; Я настоятельно рекомендую попробовать опцию fdk_aac -vbr
- установка 3-х звуков, прозрачных для меня во всех файлах, которые я пробовал, если вы хотите использовать плацебо с более высокой скоростью передачи данных, или вы звукорежиссер, вы можете попробовать настройку 5.
ffmpeg -i input.flac -c:a libfdk_aac -vbr 3 output.m4a
Нет необходимости -map_metadata
, поскольку ffmpeg будет автоматически передавать метаданные (и я уверен, что avconv тоже).
Для фиксированной скорости передачи данных 320 кбит / с (серьезно, это того не стоит, AAC обеспечивает прозрачность звука по сравнению с исходным звуком на компакт-диске при фиксированных 128 кбит / с)
ffmpeg -i input.flac -c:a libfdk_aac -b:a 320k
neroAacEnc
Кодировщик AAC Nero следует рассматривать в одном ряду с fdk_aac и qaac (Quicktime AAC). Разные люди будут высказывать разные мнения о том, какой из них лучше, но вы заметите любые различия только при очень низких скоростях, и все согласны с тем, что все они очень высокого качества.
neroAacEnc
доступно на веб-сайте Nero . Разархивируйте его и положите куда-нибудь в $ PATH.
К сожалению, neroAacEnc
может принимать только WAV аудио в качестве входа; Вы можете обойти это, используя avconv или ffmpeg в качестве декодера:
avconv -i input.flac -f wav - | neroAacEnc -if - -ignorelength -q 0.4 output.m4a
К сожалению, это лишит метаданных; чтобы передать это, используйте avprobe / ffprobe (с -show_format
) для извлечения и neroAacTag для вставки. Сценарий Bash, вероятно, будет в порядке.
Смотрите страницу HydrogenAudio на neroAacEnc : по памяти, -q
настройка 0,4 звучит для меня замечательно. Вы можете нацелить битрейт с -br
(опять же , я думаю , что это будет путь излишним):
avconv -i input.flac -f wav - | neroAacEnc -if - -ignorelength -br 320000 output.m4a
РЕДАКТИРОВАТЬ: вот скрипт для преобразования аудиофайлов в m4a с помощью neroAacEnc, а затем с помощью тегов ffprobe и neroAacTag (требует, чтобы все они находились в каталоге в вашем $ PATH). Он может принимать несколько входных файлов, поэтому, если вы сохраните его как convert-to-m4a
, вы можете конвертировать каждый файл FLAC в каталог с
convert-to-m4a *.flac
Это не ограничено только файлами FLAC; любой аудиоформат, который может декодировать ваш ffmpeg / avconv, будет работать. Вы можете изменить ffprobe и ffmpeg на avprobe и avconv:
#!/usr/bin/env bash
until [[ "$1" = '' ]]; do
ffmpeg -i "$1" -f wav - | neroAacEnc -if - -ignorelength -q 0.4 "${1%.*}.m4a"
tags=()
while read -r; do
tags+=("$REPLY")
done < <(ffprobe -i "$1" -show_format 2>/dev/null | sed -ne 's/date/year/' -e '/TAG:/s/TAG/-meta/p')
neroAacTag "${1%.*}.m4a" "${tags[@]}"
shift
done
exit 0