En primer lugar, -aq
establece una velocidad de bits variable basada en la calidad: creo que lo está buscando -ab
(tenga en cuenta que soy un usuario de ffmpeg, por lo que mi conocimiento de la sintaxis de avconv es limitado; no tengo idea de cuán lejos se ha derivado desde el tenedor).
En cualquier caso, el codificador AAC avconv / ffmpeg incorporado es bastante malo.
fdk_aac
El único codificador AAC realmente bueno para avconv / ffmpeg es libfdk_aac, pero la licencia para eso es incompatible con la GPL, por lo que para obtener acceso a él tendrá que compilar el suyo (es una guía de compilación de ffmpeg, ya que no No sé uno para avconv: la guía de Ubuntu debería estar bien para Debian, ya que no creo que haya nada específico de Ubuntu allí).
Una vez que lo tenga, siga la guía de codificación AAC ; Recomiendo probar la -vbr
opción de fdk_aac : una configuración de 3 suena transparente para mí en todos los archivos que he probado, si desea el placebo de una tasa de bits más alta, o si es un ingeniero de sonido, puede probar una configuración de 5)
ffmpeg -i input.flac -c:a libfdk_aac -vbr 3 output.m4a
No es necesario -map_metadata
, ya que ffmpeg transferirá metadatos automáticamente (y estoy bastante seguro de que avconv también lo hará).
Para una velocidad de bits fija de 320 kbit / s (en serio, esto no vale la pena, AAC logra la transparencia de audio frente al audio de CD original a aproximadamente 128 kbit / s fijos):
ffmpeg -i input.flac -c:a libfdk_aac -b:a 320k
neroAacEnc
El codificador AAC de Nero debe considerarse a la par con fdk_aac y qaac (Quicktime AAC). Diferentes personas darán diferentes opiniones sobre cuál es mejor, pero solo notará las diferencias a tasas de bits muy bajas, y todos están de acuerdo en que todos son de muy alta calidad.
neroAacEnc
está disponible en el sitio web de Nero . Descomprímalo y colóquelo en algún lugar de su $ PATH.
Lamentablemente neroAacEnc
solo puede tomar audio WAV como entrada; puede solucionar esto usando avconv o ffmpeg como decodificador:
avconv -i input.flac -f wav - | neroAacEnc -if - -ignorelength -q 0.4 output.m4a
Desafortunadamente, esto eliminará los metadatos; para transferir eso, use avprobe / ffprobe (with -show_format
) para extraer y neroAacTag para insertar. Un script bash probablemente estaría en orden.
Consulte la página de HydrogenAudio en neroAacEnc : desde la memoria, una -q
configuración de 0.4 me pareció genial. Puede dirigirse a una velocidad de bits con -br
(de nuevo, creo que esto sería así una exageración):
avconv -i input.flac -f wav - | neroAacEnc -if - -ignorelength -br 320000 output.m4a
EDITAR: aquí hay un script para convertir archivos de audio a m4a con neroAacEnc, luego etiquetar con ffprobe y neroAacTag (requiere que todos estén en un directorio en su $ PATH). Puede tomar múltiples archivos de entrada, por lo que si lo guarda como convert-to-m4a
, puede convertir cada archivo FLAC en un directorio con
convert-to-m4a *.flac
No se limita solo a los archivos FLAC; funcionará cualquier formato de audio que su ffmpeg / avconv pueda decodificar. Es posible que desee cambiar ffprobe y ffmpeg a avprobe y 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