Converter para WAV usando FFMPEG para pipe em LAME?

1

Estou tentando converter um arquivo AAC em WAV para canalizar a saída para o LAME. Eu estou procurando fazer isso, especificamente:

find . -maxdepth 1 -type f -iname "*.m4a" | sort | while read file; do
    ffmpeg -i "$file" -acodec pcm_s16le -ac 2 - | lame -b 256 -m s -q 0 - output.mp3
done

Eu recebo o seguinte erro:

Unable to find a suitable output format for 'pipe:'
Warning: unsupported audio format

Existe uma maneira de especificar o -acodec para a saída? Lendo a manpage agora.

Eu sei que posso converter para MP3 dentro do FFMPEG, mas não é isso que eu quero fazer;)

    
por Naftuli Kay 01.01.2015 / 00:15

3 respostas

1

Graças ao aviso da resposta da Miati , percebi:

ffmpeg -i file.m4a -f wav -acodec pcm_s16le -ac 2 - | \
    lame -m s -b 320 -q 0 --replaygain-accurate - file.mp3

O formato precisa ser definido na saída para o stdout.

    
por 02.01.2015 / 19:17
0

O que acontece quando você corre?

ffmpeg -i file.m4a -acodec pcm_s16le -ac 2 file.wav

Funcionou bem para mim.

Se ocorrer um erro, o erro anterior faz sentido, você pode não ter suporte para decodificar aac ou codificar wav. Em seguida, o pipe falha porque não sabe como formatá-lo como. As possíveis soluções nesse ponto seriam compilar o ffmpeg com suporte para os formatos (meu palpite aac como eu acredito ser não-livre)

Tente usar -f De acordo com esta página , quando a saída é definida como stdout (ou -), o formato do contêiner deve ser definido manualmente. O post diz para usar matroska (ou container .mkv)

ffmpeg -i file.m4a -acodec pcm_s16le -f matroska -ac 2 -
    
por 01.01.2015 / 07:54
0

Este é um erro comum, FFmpeg é ganancioso em stdin. Se você for executar o FFmpeg em um loop de leitura, será necessário desativá-lo

ffmpeg -nostdin

Exemplo

    
por 02.01.2015 / 10:49

Tags