Перш за все, -aq
встановлює змінну швидкість передачі на основі якості - я думаю, що ви шукаєте -ab
(зауважте, що я користувач ffmpeg, тому мої знання про синтаксис avconv обмежені - я не маю уявлення, наскільки це проходить з моменту виделка).
Незалежно від цього вбудований кодер AAC avconv / ffmpeg AAC досить поганий.
fdk_aac
Єдиний дійсно хороший кодер AAC для avconv / ffmpeg - libfdk_aac - але ліцензія на це несумісна з GPL, тому для отримання доступу до нього вам доведеться скласти свій власний (це посібник з компіляції ffmpeg, оскільки я не Я не знаю одного для avconv - керівництво по Ubuntu має бути чудовим для Debian, оскільки я не думаю, що там є щось специфічне для Ubuntu).
Отримавши це, дотримуйтесь посібника з кодування AAC ; Я настійно рекомендую спробувати -vbr
варіант fdk_aac - налаштування 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 (with -show_format
) для вилучення та neroAacTag для вставки. Базовий сценарій, ймовірно, буде в порядку.
Дивіться сторінку HydrogenAudio на neroAacEnc : з пам’яті -q
налаштування 0,4 звучало для мене чудово. Ви можете націлити бітрейт з -br
(знову ж , я думаю , що це буде шлях зайвим):
avconv -i input.flac -f wav - | neroAacEnc -if - -ignorelength -br 320000 output.m4a
EDIT: ось сценарій для перетворення аудіофайлів у 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