Posso ingressar com êxito em vários arquivos usando o seguinte comando:
ffmpeg -f concat -i input.txt -codec copy output.mp4
O único problema com este comando é que você precisa ler os caminhos do arquivo de texto chamado input.txt com o seguinte conteúdo:
file 'C:\Users\fabio\Downloads\Super\Sharks\01.mp4'
file 'C:\Users\fabio\Downloads\Super\Sharks\02.mp4'
file 'C:\Users\fabio\Downloads\Super\Sharks\03.mp4'
Existe uma maneira de atingir o mesmo objetivo sem precisar ler os caminhos de arquivo de um arquivo? Eu tentei o seguinte sem sorte:
ffmpeg -f concat -i file "C:\a\b\01.mp4" file "C:\a\b\02.mp4" -codec copy output.mp4
ffmpeg -f concat -i "C:\a\b\01.mp4" "C:\a\b\02.mp4" -codec copy output.mp4
Eu tenho que usar um comando diferente?
command-line
ffmpeg
Fabio Delarias
fonte
fonte
Respostas:
Atualização de 2019:
Conforme mencionado nos comentários, o Stack Overflow possui uma ótima descrição das opções disponíveis para concatenação, além de uma discussão sobre qual método usar, dependendo dos tipos de arquivos que você está usando:
Como concatenar dois arquivos MP4 usando o FFmpeg?
Resposta original de 2016:
Você deve poder usar o método de protocolo concat para combinar os arquivos:
Além disso, o manual FFmpeg discute um método especificamente para arquivos MP4, para concatená-los sem perdas, mas requer que você crie arquivos temporários (ou pipes nomeados):
fonte
output.mp4
.Você pode substituir o arquivo pela lista, enviando uma lista para
stdout
e lendo a listastdin
por ffmpeg:fonte
Não, parece não haver maneira de usar o ffmpeg concat desmuxer em uma única linha de comando sem algum hack. Você precisa criar o arquivo de texto de entrada com a lista de arquivos. Eu mesmo pensei isso, talvez alguém adicione isso ao FFMpeg posteriormente.
A resposta aceita para essa pergunta usa o protocolo concat, não o desmuxer concat, que é o que o OP pediu.
fonte
Você ainda pode fazer isso em um script sem alterar o comando. Algo como:
O $$ se expande para o pid do shell executando o comando, portanto o nome do arquivo será diferente toda vez que você o executar. então você pode usar $$ .txt, se preferir. Ou outra coisa...
Além disso, você pode usar os arquivos aqui para adicionar um monte de dados ao arquivo:
bash A substituição de variáveis funciona, para que você possa determinar programaticamente o conteúdo do arquivo, ele não precisa ser corrigido. Eu incorporo esse tipo de coisa em loops o tempo todo. Por fim, o redirecionamento funciona da mesma maneira que acima, portanto,> $$. Tmp trunca e, em seguida, escreve >> >> .tmp anexado.
fonte