Converta arquivos de áudio para mp3 usando ffmpeg

159

Preciso converter arquivos de áudio para mp3 usando o ffmpeg.

Quando escrevo o comando como ffmpeg -i audio.ogg -acodec mp3 newfile.mp3, recebo o erro:

FFmpeg version 0.5.2, Copyright (c) 2000-2009 Fabrice Bellard, et al.
  configuration: 
  libavutil     49.15. 0 / 49.15. 0
  libavcodec    52.20. 1 / 52.20. 1
  libavformat   52.31. 0 / 52.31. 0
  libavdevice   52. 1. 0 / 52. 1. 0
  built on Jun 24 2010 14:56:20, gcc: 4.4.1
Input #0, mp3, from 'ZHRE.mp3':
  Duration: 00:04:12.52, start: 0.000000, bitrate: 208 kb/s
    Stream #0.0: Audio: mp3, 44100 Hz, stereo, s16, 256 kb/s
Output #0, mp3, to 'audio.mp3':
    Stream #0.0: Audio: 0x0000, 44100 Hz, stereo, s16, 64 kb/s
Stream mapping:
  Stream #0.0 -> #0.0
Unsupported codec for output stream #0.0

Também executei este comando:

 ffmpeg -formats | grep mp3

e recebi isso em resposta:

FFmpeg version 0.5.2, Copyright (c) 2000-2009 Fabrice Bellard, et al.
  configuration: 
  libavutil     49.15. 0 / 49.15. 0
  libavcodec    52.20. 1 / 52.20. 1
  libavformat   52.31. 0 / 52.31. 0
  libavdevice   52. 1. 0 / 52. 1. 0
  built on Jun 24 2010 14:56:20, gcc: 4.4.1
 DE mp3             MPEG audio layer 3
 D A    mp3             MP3 (MPEG audio layer 3)
 D A    mp3adu          ADU (Application Data Unit) MP3 (MPEG audio layer 3)
 D A    mp3on4          MP3onMP4
 text2movsub remove_extra noise mov2textsub mp3decomp mp3comp mjpegadump imxdump h264_mp4toannexb dump_extra

Eu acho que o codec mp3 não está instalado. Estou no caminho certo aqui?

Hrishikesh Choudhari
fonte

Respostas:

230

Você pode usar este comando:

ffmpeg -i input.wav -vn -ar 44100 -ac 2 -b:a 192k output.mp3

Explicação dos argumentos usados ​​neste exemplo:

  • -i - Arquivo de entrada

  • -vn - Desative o vídeo, para garantir que nenhum vídeo (incluindo a imagem da capa do álbum) seja incluído se a fonte for um arquivo de vídeo

  • -ar- Defina a frequência de amostragem de áudio. Para fluxos de saída, é definido por padrão para a frequência do fluxo de entrada correspondente. Para fluxos de entrada, essa opção faz sentido apenas para dispositivos de captura de áudio e desmuxadores brutos e é mapeada para as opções de desmuxador correspondentes.

  • -ac- Defina o número de canais de áudio. Para fluxos de saída, é definido por padrão para o número de canais de áudio de entrada. Para fluxos de entrada, essa opção faz sentido apenas para dispositivos de captura de áudio e desmuxadores brutos e é mapeada para as opções de desmuxador correspondentes. Então usado aqui para garantir que seja estéreo (2 canais)

  • -b:a - Converte a taxa de bits do áudio em 192kbit exato por segundo

Frank
fonte
5
Isso observa a diferença para os argumentos de taxa de bits do ffmpeg . -qscale:aé para VBR e -b:aé para CBR. A codificação ABR é possível, mas detalhada em um local diferente.
1934286
2
Eu iria substituir -b: um com q: a 2, o que daria VBR ~ 192 em vez de CBR
apanloco
@apanloco para mim, mudar de -b para -q destrói o som. O uso de nenhuma opção ou as opções apresentadas na resposta soam praticamente iguais às da fonte .wav.
Michael Teter
76

1) wav para mp3

ffmpeg -i audio.wav -acodec libmp3lame audio.mp3

2) ogg para mp3

ffmpeg -i audio.ogg -acodec libmp3lame audio.mp3

3) ac3 para mp3

ffmpeg -i audio.ac3 -acodec libmp3lame audio.mp3

4) aac para mp3

ffmpeg -i audio.aac -acodec libmp3lame audio.mp3
Ijas Ahamed N
fonte
Como você especifica a taxa de bits do mp3?
Suragch
4
Adicione -b:a 128k128 kbps.
Gyan
5
Ou ainda mais curto sem acodec: ffmpeg -i audio.aac audio.mp3
Timo
Como converter de .mp3 para .ogg?
Cristea Victor
18

Deixa pra lá,

Estou convertendo meus arquivos de áudio para mp2 usando o comando:

ffmpeg -i input.wav -f mp2 output.mp3

Este comando funciona perfeitamente.

Eu sei que isso realmente converte os arquivos para o formato mp2, mas os tamanhos dos arquivos resultantes são os mesmos.

Hrishikesh Choudhari
fonte
2
Gera um arquivo wave
LtWorf
8
Isso não resulta em um arquivo mp3
m13r 17/10
2
Embora os tamanhos sejam iguais, esses arquivos mp2 não podem ser reproduzidos em um navegador da Web , pois não são mp3. Nem mesmo com um flash player. O único benefício que eles têm é que eles exigem menos CPU para codificar, mas os inconvenientes não valem a pena.
21918 Daniel F
3
Esta não deve ser a resposta aceita, pois não responde corretamente à pergunta.
Reinierpost
18

Para processamento em lote com arquivos na pasta que visa 190 VBR e extensão de arquivo = .mp3 em vez de .ac3.mp3, você pode usar o seguinte código

Altere .ac3 para o formato de áudio de origem.

configurações de mp3 ffmpeg

for f in *.ac3 ; do ffmpeg -i "$f" -acodec libmp3lame -q:a 2 "${f%.*}.mp3"; done
plano B
fonte
13

Para arquivos de processamento em lote na pasta:

for i in *.wav; do ffmpeg -i "$i" -f mp3 "${i%}.mp3"; done

Este script converte todos os arquivos "wav" na pasta em arquivos mp3 e adiciona extensão mp3

O ffmpeg precisa ser instalado. (Veja outras respostas)

MKK
fonte
1
Com -f mp2MP2 é gerado, não MP3. Altere para-f mp3
Gyan
3
O comando acima cria arquivos que são nomeados wav.mp3. Para obter arquivos com a extensão de arquivo correta, altere o comando para:, for i in *.wav; do ffmpeg -i "$i" -f mp3 "${i%.*}.mp3"; doneou seja, adicione .*depois i%.
Suzana
11

Eu tive que limpar meu ffmpeg e instalar outro de um ppa:

sudo apt-get purge ffmpeg
sudo apt-add-repository -y ppa:jon-severinsson/ffmpeg 
sudo apt-get update 
sudo apt-get install ffmpeg

Em seguida, converta:

 ffmpeg -i audio.ogg -f mp3 newfile.mp3
Komu
fonte
4
este é o caminho mais curto, mas se você quiser especificar o kb qualidade por segundo, use 192k -aB
wrivas
7

Conforme descrito aqui, a extensão de entrada e saída será detectada por ffmpegisso, não há necessidade de se preocupar com os formatos, basta executar este comando:

ffmpeg -i inputFile.ogg outputFile.mp3

Kasra K
fonte
2

https://trac.ffmpeg.org/wiki/Encode/MP3

Codificação VBR:

ffmpeg -vn -ar 44100 -ac 2 -q:a 1 -codec:a libmp3lame output.mp3
Guillaume M.
fonte
2
Você esqueceu a entrada.
Llogan 29/03/19
2

Alta qualidade para Mac OS funciona perfeitamente!

ffmpeg -i input.wma -q:a 0 output.mp3

Ivan Sanchez
fonte
1

Experimente a Construção Estática do FFmpeg link de

Documentação: https://www.johnvansickle.com/ffmpeg/

Hospede a construção estática no seu servidor no mesmo diretório

$ffmpeg = dirname(__FILE__).'/ffmpeg';

$command = $ffmpeg.'ffmpeg -i audio.ogg -acodec libmp3lame audio.mp3';

shell_exec($command);
Livro de códigos
fonte
0

Se você tem uma pasta e subpasta cheia de wav que deseja converter, coloque o comando abaixo em um arquivo, salve-o em um arquivo .bat na raiz da pasta na qual deseja converter e execute o arquivo bat

for /R %%g in (*.wav) do start /b /wait "" "C:\ffmpeg-4.0.1-win64-static\bin\ffmpeg" -threads 16 -i "%%g" -acodec libmp3lame "%%~dpng.mp3" && del "%%g"
Dinesh Rajan
fonte