Tout d'abord, -aq
définit un débit binaire variable basé sur la qualité - je pense que vous recherchez -ab
(notez que je suis un utilisateur ffmpeg, donc ma connaissance de la syntaxe avconv est limitée - je ne sais pas jusqu'où il a dérivé depuis fourchette).
Quoi qu'il en soit, l'encodeur AAC avconv / ffmpeg intégré est assez mauvais.
fdk_aac
Le seul très bon encodeur AAC pour avconv / ffmpeg est libfdk_aac - mais la licence pour cela est incompatible avec la GPL, donc pour y accéder, vous devrez compiler le vôtre (c'est un guide de compilation ffmpeg, puisque je ne n'en connais pas un pour avconv - le guide Ubuntu devrait convenir à Debian, car je ne pense pas qu'il y ait quoi que ce soit de spécifique à Ubuntu).
Une fois que vous l'avez, suivez le guide d'encodage AAC ; Je recommande fortement d'essayer l' -vbr
option de fdk_aac - un réglage de 3 sons transparents pour moi sur tous les fichiers que j'ai essayés, si vous voulez le placebo d'un débit binaire plus élevé, ou si vous êtes ingénieur du son, vous pouvez essayer un réglage de 5.
ffmpeg -i input.flac -c:a libfdk_aac -vbr 3 output.m4a
Pas besoin -map_metadata
, car ffmpeg transférera automatiquement les métadonnées (et je suis sûr que avconv le fera aussi).
Pour un débit binaire fixe de 320 kbit / s (sérieusement, cela n'en vaut pas la peine, AAC atteint la transparence audio par rapport au CD audio original à environ 128 kbit / s fixe):
ffmpeg -i input.flac -c:a libfdk_aac -b:a 320k
neroAacEnc
L'encodeur AAC de Nero doit être considéré comme comparable à fdk_aac et qaac (Quicktime AAC). Différentes personnes donneront des opinions différentes sur laquelle est la meilleure, mais vous ne remarquerez des différences qu'à des débits très faibles, et tout le monde convient qu'elles sont toutes de très haute qualité.
neroAacEnc
est disponible sur le site Web de Nero . Décompressez-le et placez-le quelque part dans votre $ PATH.
Malheureusement, neroAacEnc
ne peut prendre que l'audio WAV en entrée; vous pouvez contourner cela en utilisant avconv ou ffmpeg comme décodeur:
avconv -i input.flac -f wav - | neroAacEnc -if - -ignorelength -q 0.4 output.m4a
Malheureusement, cela supprimera les métadonnées; pour transférer cela, utilisez avprobe / ffprobe (avec -show_format
) pour extraire et neroAacTag pour insérer. Un script bash serait probablement en ordre.
Voir la page HydrogenAudio sur neroAacEnc : de mémoire, un -q
paramètre de 0,4 me paraissait très bien. Vous pouvez cibler un débit binaire avec -br
(encore une fois, je pense que ce serait ainsi exagéré):
avconv -i input.flac -f wav - | neroAacEnc -if - -ignorelength -br 320000 output.m4a
EDIT: voici un script pour convertir des fichiers audio en m4a avec neroAacEnc, puis baliser avec ffprobe et neroAacTag (nécessite qu'ils soient tous dans un répertoire de votre $ PATH). Il peut prendre plusieurs fichiers d'entrée, donc si vous l'enregistrez sous convert-to-m4a
, vous pouvez convertir chaque fichier FLAC dans un répertoire avec
convert-to-m4a *.flac
Il ne se limite pas aux seuls fichiers FLAC; tout format audio que votre ffmpeg / avconv peut décoder fonctionnera. Vous voudrez peut-être changer ffprobe et ffmpeg en avprobe et 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