Antes de tudo, -aq
define uma taxa de bits variável baseada na qualidade - acho que você está procurando -ab
(note que eu sou um usuário ffmpeg, portanto, meu conhecimento da sintaxe avconv é limitado - não faço ideia de quão longe ela foi desde o garfo).
Independentemente disso, o codificador AAC avconv / ffmpeg embutido é muito ruim.
fdk_aac
O único codificador AAC realmente bom para avconv / ffmpeg é libfdk_aac - mas a licença é incompatível com a GPL, portanto, para ter acesso a ele, você precisará compilar o seu próprio (esse é um guia de compilação do ffmpeg, já que eu não conheço um para o avconv - o guia Ubuntu deve ser bom para o Debian, já que não acho que exista algo específico do Ubuntu nele).
Depois de conseguir, siga o guia de codificação AAC ; Eu recomendo fortemente experimentar a -vbr
opção de fdk_aac - uma configuração de 3 parece transparente para mim em todos os arquivos que tentei, se você deseja um placebo com uma taxa de bits mais alta ou é um engenheiro de som, pode tentar uma configuração de 5)
ffmpeg -i input.flac -c:a libfdk_aac -vbr 3 output.m4a
Não é necessário -map_metadata
, pois o ffmpeg transfere automaticamente os metadados (e tenho certeza de que o avconv também).
Para uma taxa de bits fixa de 320 kbit / s (sério, isso não vale a pena, o AAC obtém transparência de áudio versus o áudio do CD original em torno de 128 kbit / s fixos):
ffmpeg -i input.flac -c:a libfdk_aac -b:a 320k
neroAacEnc
O codificador AAC do Nero deve ser considerado igual ao fdk_aac e qaac (Quicktime AAC). Pessoas diferentes darão opiniões diferentes sobre qual é o melhor, mas você só notará diferenças a taxas de bits muito baixas e todos concordam que todos são de alta qualidade.
neroAacEnc
está disponível no site da Nero . Descompacte e coloque-o em algum lugar do seu $ PATH.
Infelizmente, neroAacEnc
só pode receber áudio WAV como entrada; você pode contornar isso usando avconv ou ffmpeg como decodificador:
avconv -i input.flac -f wav - | neroAacEnc -if - -ignorelength -q 0.4 output.m4a
Infelizmente, isso removerá os metadados; Para transferir isso, use avprobe / ffprobe (with -show_format
) para extrair e neroAacTag para inserir. Um script bash provavelmente estaria em ordem.
Veja a página HydrogenAudio no neroAacEnc : pela memória, uma -q
configuração de 0,4 me pareceu muito boa. Você pode direcionar uma taxa de bits com -br
(novamente, eu acho que isso seria como um exagero):
avconv -i input.flac -f wav - | neroAacEnc -if - -ignorelength -br 320000 output.m4a
EDIT: aqui está um script para converter arquivos de áudio para m4a com o neroAacEnc e depois marcar com ffprobe e neroAacTag (requer que todos estejam em um diretório no seu $ PATH). Pode levar vários arquivos de entrada; portanto, se você o salvar como convert-to-m4a
, poderá converter todos os arquivos FLAC em um diretório com
convert-to-m4a *.flac
Não se limita apenas aos arquivos FLAC; qualquer formato de áudio que seu ffmpeg / avconv possa decodificar funcionará. Você pode alterar ffprobe e ffmpeg para 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