FFMPEG: Converta arquivos m4a para mp3 sem perda significativa de informação / qualidade. Taxa de bits automatizada


43

Tenho uma carga de arquivos de áudio (cerca de 1000) que desejo converter de m4a para mp3 para que eu possa usá-los em um CD player com uma porta USB.

Tentei fazer algo simples como: ffmpeg -i FILE.m4a FILE.mp3mas isso parece reduzir a taxa de bits para um valor muito baixo, o que não é o que eu quero.

Da mesma forma, não quero converter usando uma taxa de bits constante, como 320k, porque alguns dos arquivos que estou convertendo são 320k m4a e outros são de baixa qualidade como 96k m4a.

Parece não fazer sentido forçar 320k, pois alguns arquivos se tornam muitas vezes maiores do que precisam. Da mesma forma, não faz sentido destruir todos os meus arquivos de 320k, convertendo-os em algo muito menor que 96k. (No momento, os arquivos estão sendo convertidos para cerca de 50k.)

Alguém sabe como eu posso fazer isso? O que eu realmente quero fazer é dizer ao ffmpeg para converter todos os arquivos m4a em um diretório em mp3, mantendo a qualidade de áudio atual da melhor forma possível. (É claro que é provável que ocorram algumas perdas extras na conversão de formatos de arquivo com perda para perda).

Obrigado pela ajuda. Se isso não for possível, existe algum tipo de script que pode detectar a qualidade necessária ao converter arquivos individualmente?

PS: Estou trabalhando em um Mac Intel, mas também tenho uma caixa Ubuntu.

Respostas:


49

VBR

Você pode usar a -qscale:aopção ffmpegpara criar uma saída MP3 de taxa de bits variável (VBR). From FFmpeg Wiki: Codificação de áudio mp3 VBR (taxa de bits variável) :

Controle a qualidade com -qscale:a(ou o alias -q:a). Os valores são específicos do codificador, portanto, para libmp3lame, o intervalo é de 0 a 9, onde um valor mais baixo é uma qualidade mais alta. 0-3 normalmente produz resultados transparentes, 4 (padrão) deve estar próximo da transparência perceptiva e 6 geralmente produz uma qualidade "aceitável". A opção -qscale:aé mapeada para a -Vopção na ferramenta de interface da linha de comandos lame independente.

Você precisará experimentar para ver qual valor é aceitável para você. Consulte também Áudio de hidrogênio: Configurações recomendadas do codificador LAME .

Codificando vários arquivos

Você pode usar um Bash "for loop" para codificar todos os arquivos em um diretório:

$ mkdir newfiles
$ for f in *.m4a; do ffmpeg -i "$f" -codec:v copy -codec:a libmp3lame -q:a 2 newfiles/"${f%.m4a}.mp3"; done

Pegue ffmpeg

É recomendável usar uma compilação recente, ffmpegse possível. Consulte a página Download do FFmpeg para obter links para compilações para OS X, Linux e Windows. Você também pode seguir um guia para compilar o FFmpeg .


1
Ok, obrigado, os comandos funcionaram, mas acho que não está fazendo o que queria. Eu configurei -q: a 0, que está fazendo o que eu esperava para m4a de qualidade superior (produzindo arquivos grandes com taxas de vbr mais altas), mas arquivos de qualidade inferior que eu acho que ainda estão sendo convertidos em arquivos grandes, com vbr de cerca de 250-260 kb / s. Eu esperaria que os arquivos com cerca de 96k no formato m4a fossem convertidos em uma taxa de bits semelhante com o codificador lame no modo vbr. Estou assumindo que não entendi direito como funciona o modo de codificação vbr?
precisa saber é o seguinte

19

use FFmpeg (também existem muitas versões da GUI)

  1. O MP3 já está descontinuado (em 2017), codec obsoleto. A Internet já mudou para o AAC (codec mais eficiente e de qualidade):

    ffmpeg -i filenameee.m4a -acodec copy output.aac
    
  2. No entanto, se você ainda deseja usar o MP3 (porque ainda é suportado por mais dispositivos):

    ffmpeg -i filenameee.m4a -acodec libmp3lame -ab 256k output.mp3
    

4
Desde a pergunta é sobre qualidade, talvez seja benéfico se converter para 256k em vez de 128.
VessoVit

3

Isso funcionou para mim:

ffmpeg -i testing.m4v -b:a 192K -vn testing.mp3

1

Usando as respostas existentes como base, escrevi um script bash que deve fazer exatamente o que a pergunta faz em uma máquina Ubuntu (testada em 16.04). Você precisará instalar o avprobeque está no libav-toolspacote. Você pode instalar avprobecom o seguinte comando

sudo apt-get install libav-tools

NOTA: Seria bom fazer um backup de qualquer pasta na qual você executa esse script, além de fazer o seu melhor para ler e entender o que está fazendo antes de executar.

Eu não testei com muito rigor, então YMMV.

#!/bin/bash

mkdir "mp3s"
for f in *.m4a;
do
    bitrate=$(avprobe "${f}" 2> >(grep bitrate) | sed 's/^.*bitrate://g' | sed 's/[^0-9]*//g')
    bitrate="${bitrate}K"
    new_filename=$(echo "${f}" | sed 's/.m4a$/.mp3/g')
    ffmpeg -y -i "${f}" -acodec libmp3lame -ab "${bitrate}" "mp3s/${new_filename}"
done

0

Se você trabalha a 48 KhZ e pelo menos 24 bits no arquivo de entrada (de um editor de arquivo i.ex.) -q:a 0reproduzirá os 20 kHz em um arquivo não tão grande quanto o flac ... Mas áudio de baixa qualidade, a menos que você reduza o ruído a partir de altas frequências (silvos) por editores de áudio de pontilhamento ou redução de nariz, criados em conversões, que serão reproduzidos e, em seguida, usarão o arquivo de dados como um HF inaudível, mas com ruído caro.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.