Quero concatenar vários arquivos WAV em um único arquivo WAV usando o FFMPEG.
Eu usei o seguinte comando e ele gera o arquivo necessário.
Comando:
ffmpeg -f concat -i mylist.txt -c copy output.wav
Arquivo :
#mylist.txt
file '1.wav'
file '2.wav'
file '3.wav'
file '4.wav'
Mas como você pode ver, o problema é que eu tenho que criar um arquivo de texto para especificar a lista de arquivos WAV a concatenar.
Eu posso executar todas essas tarefas, mas eu preferiria um único comando, algo que se pareça com
ffmpeg -i 1.wav -i 2.wav -i 3.wav -i 4.wav output.wav
ou
ffmpeg -i "concat:1.wav|2.wav|3.wav|4.wav" -c copy output.wav
Eu tentei esses dois comandos simples, mas eles retornam apenas a voz de 1.wav
Por favor, ajude-me a escrever um único comando (ou corrija os 2 comandos acima) que alcançam o resultado desejado.
Por favor, não sugira outros codificadores / editores de mídia. Quero usar apenas o FFMPEG, pois ele já está instalado e usado em outros locais.
fonte
[0:0][1:0][2:0][3:0]
para corresponder ao número de arquivos. Use isso exatamente como diz. A única coisa que você deve alterar são os arquivos de entrada en=4
.Too many inputs specified for the "concat" filter.
quando tento processar apenas 2 entradas com o código original. Ele funciona embora quando eu remover[2:0][3:0]
... o que faz sentido para mim desde que, neste caso, não existem tais coisas como córregos2:0
e3:0
...n
.Eu acho que a melhor opção é usar sox, não ffmpeg:
A solução vem de Como anexar um monte de arquivos .wav enquanto retendo pedidos numéricos (sem preenchimento de zero)?
fonte
.wav
, massox
não parece dar suporte.mp3
..wav
O wiki do FFmpeg menciona que o
concat
protocolo não é possível em todos os tipos de arquivo. Ele funciona bem com a maioria dos contêineres MPEG e fluxos de bits, mas obviamente não os arquivos WAV com áudio PCM.Você não precisa necessariamente criar um arquivo temporário e usá-lo. Com o Bash (ou outros shells que oferecem suporte à substituição de processos ), você pode fazer tudo em um único comando:
A substituição do processo
<( )
cria um arquivo - ou, para ser mais preciso, um descritor de arquivo - em tempo real, queffmpeg
pode ser lido. Este arquivo conterá o caminho para todos os.wav
arquivos no diretório atual. Temos que prefixá-lo$(pwd)
para obter o caminho correto em relação ao seu diretório atual, e não em relação ao descritor de arquivo.Obviamente, o comando dentro da substituição pode ser alterado para outra coisa.
fonte
Unsafe file name
erro, precisará da-safe 0
opção antes-i
. ref. stackoverflow.com/q/38996925/297679Outra opção é usar concat
fonte
No script Cmd.EXE .BAT do Win8:
Dessa forma, você não se preocupa com os nomes dos arquivos de origem ou com o parâmetro concat-count.
fonte
Você pode usar
shntool
para arquivos wav.fonte