Prima di tutto, -aq
imposta un bit rate variabile basato sulla qualità - penso che tu stia cercando -ab
(nota che sono un utente ffmpeg, quindi la mia conoscenza della sintassi avconv è limitata - non ho idea di quanto sia andato alla deriva dal forchetta).
Indipendentemente da ciò, l'encoder AAC integrato avconv / ffmpeg è piuttosto male.
fdk_aac
L'unico codificatore AAC davvero valido per avconv / ffmpeg è libfdk_aac - ma la licenza per questo è incompatibile con la GPL, quindi per accedervi dovrai compilare la tua (è una guida alla compilazione di ffmpeg, dato che ne conosco uno per avconv - la guida di Ubuntu dovrebbe andare bene per Debian, dal momento che non credo che ci sia qualcosa di specifico per Ubuntu lì dentro).
Una volta ottenuto, segui la guida alla codifica AAC ; Consiglio vivamente di provare l' -vbr
opzione fdk_aac : un'impostazione di 3 suona trasparente per me su tutti i file che ho provato, se vuoi un placebo con un bit rate più alto o sei un tecnico del suono, puoi provare un'impostazione di 5.
ffmpeg -i input.flac -c:a libfdk_aac -vbr 3 output.m4a
Non è necessario -map_metadata
, poiché ffmpeg trasferirà automaticamente i metadati (e sono abbastanza sicuro che anche avconv lo farà).
Per una velocità di trasmissione fissa di 320 kbit / s (sul serio, non ne vale la pena, AAC raggiunge la trasparenza audio rispetto all'audio del CD originale a circa 128 kbit / s fissi):
ffmpeg -i input.flac -c:a libfdk_aac -b:a 320k
neroaacenc
L'encoder AAC di Nero deve essere considerato alla pari con fdk_aac e qaac (Quicktime AAC). Persone diverse daranno opinioni diverse su quale sia la migliore, ma noterai solo differenze a bit rate molto bassi e tutti concordano sul fatto che sono tutti di altissima qualità.
neroAacEnc
è disponibile dal sito Web di Nero . Decomprimilo e mettilo da qualche parte nel tuo $ PATH.
Sfortunatamente neroAacEnc
può prendere solo audio WAV come input; puoi aggirare questo problema usando avconv o ffmpeg come decoder:
avconv -i input.flac -f wav - | neroAacEnc -if - -ignorelength -q 0.4 output.m4a
Sfortunatamente, questo eliminerà i metadati; per trasferirlo, usa avprobe / ffprobe (with -show_format
) per estrarre e neroAacTag per inserire. Uno script bash sarebbe probabilmente in ordine.
Guarda la pagina HydrogenAudio su neroAacEnc : dalla memoria, -q
un'impostazione di 0,4 mi è sembrata fantastica. È possibile indirizzare un bit rate con -br
(di nuovo, credo che questo sarebbe modo eccessivo):
avconv -i input.flac -f wav - | neroAacEnc -if - -ignorelength -br 320000 output.m4a
EDIT: ecco uno script per convertire i file audio in m4a con neroAacEnc, quindi taggando con ffprobe e neroAacTag (richiede che tutti siano in una directory nel tuo $ PATH). Può richiedere più file di input, quindi se lo salvi come convert-to-m4a
, puoi convertire tutti i file FLAC in una directory con
convert-to-m4a *.flac
Non è limitato ai soli file FLAC; funzionerà qualsiasi formato audio decodificabile con ffmpeg / avconv. Potresti voler cambiare ffprobe e ffmpeg in avprobe e 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