Primeiro de tudo, -aq
define uma taxa de bits variável baseada na qualidade - acho que você está procurando por -ab
(note que sou um usuário ffmpeg, então meu conhecimento da sintaxe do avconv é limitado - eu ' Não faço ideia de quão longe está desde o garfo).
Independentemente disso, o codificador AAC avconv / ffmpeg embutido é muito ruim.
fdk_aac
O único codificador AAC realmente bom para o avconv / ffmpeg é o libfdk_aac - mas a licença para isso é incompatível com o GPL, então para ter acesso a ele você terá que compila seus próprios (é um guia de compilação ffmpeg, já que eu não conheço um para o avconv - o guia do Ubuntu deve ser bom para o Debian, já que eu não sei Acho que há alguma coisa específica do Ubuntu lá dentro.
Depois que você conseguir, siga o Guia de codificação AAC ; Eu recomendo strongmente experimentar a opção -vbr
do fdk_aac - uma configuração de 3 sons transparente para mim em todos os arquivos que eu tentei, se você quiser o placebo de uma taxa de bits maior, ou você é um engenheiro de som, você pode tentar uma configuração de 5.
ffmpeg -i input.flac -c:a libfdk_aac -vbr 3 output.m4a
Não há necessidade de -map_metadata
, já que o ffmpeg transferirá metadados automaticamente (e eu tenho certeza que o avconv também irá).
Para uma taxa de bits fixa de 320 kbit / s (sério, isso não vale a pena, AAC atinge transparência de áudio vs. áudio de CD original em torno de 128 kbit / s):
ffmpeg -i input.flac -c:a libfdk_aac -b:a 320k
neroAacEnc
O codificador AAC da Nero deve ser considerado em paralelo com fdk_aac e qaac (Quicktime AAC). Pessoas diferentes darão opiniões diferentes sobre qual delas é melhor, mas você só notará quaisquer diferenças com taxas de bits muito baixas, e todos concordam que todas são de alta qualidade.
neroAacEnc
está disponível no site da Nero . Descompacte-o e coloque-o em algum lugar em seu $ PATH.
Infelizmente, neroAacEnc
só pode receber áudio WAV como entrada; você pode contornar isso usando avconv ou ffmpeg como um decodificador:
avconv -i input.flac -f wav - | neroAacEnc -if - -ignorelength -q 0.4 output.m4a
Infelizmente, isso tira os metadados; para transferir isso, use avprobe / ffprobe (com -show_format
) para extrair e neroAacTag para inserir. Um script bash provavelmente estaria em ordem.
Veja a página do HydrogenAudio no neroAacEnc : da memória, uma configuração -q
de 0.4 parecia ótimo para mim. Você pode segmentar uma taxa de bits com -br
(novamente, acho que isso seria um exagero modo ):
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, em seguida, marcar com ffprobe e neroAacTag (requer que todos estejam em um diretório em seu $ PATH). Ele pode ter vários arquivos de entrada, portanto, se você salvá-lo como convert-to-m4a
, poderá converter cada arquivo FLAC em um diretório com
convert-to-m4a *.flac
Não está limitado apenas a arquivos FLAC; Qualquer formato de áudio que seu ffmpeg / avconv possa decodificar funcionará. Você pode querer alterar o ffprobe e o 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