Zunächst einmal -aq
setzt eine qualitätsbezogene variable Bitrate - ich glaube , Sie suchen -ab
(beachten Sie, dass ich ein ffmpeg Benutzer bin, so mein Wissen über avconv Syntax beschränkt ist - habe ich keine Ahnung , wie weit es ist , da die driftete Gabel).
Unabhängig davon ist der eingebaute avconv / ffmpeg AAC-Encoder ziemlich schlecht.
fdk_aac
Der einzige wirklich gute AAC-Encoder für avconv / ffmpeg ist libfdk_aac - aber die Lizenz dafür ist nicht mit der GPL kompatibel. Um darauf zugreifen zu können, müssen Sie dies tun Ihren eigenen kompilieren (das ist ein ffmpeg-Kompilierungshandbuch, da ich nicht Ich kenne keine für avconv - die Ubuntu-Anleitung sollte für Debian in Ordnung sein, da ich glaube, dass dort nichts Ubuntu-spezifisches ist.
Befolgen Sie anschließend die AAC-Codierungsanleitung . Ich empfehle dringend, fdk_aac's auszuprobieren-vbr
Option - eine Einstellung von 3 klingt für mich in allen Dateien, die ich ausprobiert habe, transparent. Wenn Sie ein Placebo mit einer höheren Bitrate wünschen oder Tontechniker sind, können Sie eine Einstellung von ausprobieren 5.
ffmpeg -i input.flac -c:a libfdk_aac -vbr 3 output.m4a
Kein Bedarf für -map_metadata
, da ffmpeg automatisch Metadaten überträgt (und ich bin mir ziemlich sicher, dass avconv dies auch tun wird).
Bei einer festen Bitrate von 320 kbit / s (im Ernst, das ist es nicht wert, erreicht AAC Audiotransparenz im Vergleich zu Original-CD-Audio bei etwa 128 kbit / s):
ffmpeg -i input.flac -c:a libfdk_aac -b:a 320k
neroAacEnc
Der AAC-Encoder von Nero sollte mit fdk_aac und qaac (Quicktime AAC) gleichgesetzt werden. Unterschiedliche Personen geben unterschiedliche Meinungen darüber ab, welche besser ist, aber Sie werden Unterschiede nur bei sehr niedrigen Bitraten feststellen, und alle sind sich einig, dass sie alle von sehr hoher Qualität sind.
neroAacEnc
ist auf der Nero-Website verfügbar . Entpacke es und lege es irgendwo in deinen $ PATH.
Leider neroAacEnc
kann nur WAV-Audio als Eingabe verwendet werden. Sie können dies umgehen, indem Sie avconv oder ffmpeg als Decoder verwenden:
avconv -i input.flac -f wav - | neroAacEnc -if - -ignorelength -q 0.4 output.m4a
Leider werden dadurch Metadaten entfernt. Um dies zu übertragen, verwenden Sie avprobe / ffprobe (with -show_format
) zum Extrahieren und neroAacTag zum Einfügen. Ein Bash-Skript wäre wahrscheinlich in Ordnung.
Siehe die HydrogenAudio- Seite auf neroAacEnc : Aus dem Speicher heraus -q
klang eine Einstellung von 0,4 für mich großartig. Sie können eine Bitrate mit -br
(wieder denke ich, das wäre viel übertrieben) anstreben:
avconv -i input.flac -f wav - | neroAacEnc -if - -ignorelength -br 320000 output.m4a
BEARBEITEN: Hier ist ein Skript zum Konvertieren von Audiodateien in m4a mit neroAacEnc und anschließendes Markieren mit ffprobe und neroAacTag (alle müssen sich in einem Verzeichnis in Ihrem $ PATH befinden). Es können mehrere Eingabedateien verwendet werden. Wenn Sie es also unter speichern convert-to-m4a
, können Sie jede FLAC-Datei in ein Verzeichnis mit konvertieren
convert-to-m4a *.flac
Es ist nicht nur auf FLAC-Dateien beschränkt. Jedes Audioformat, das Ihr ffmpeg / avconv dekodieren kann, funktioniert. Möglicherweise möchten Sie ffprobe und ffmpeg in avprobe und avconv ändern:
#!/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