Eu gosto de criar um script Bash para concatenar arquivos MP4 usando o FFmpeg, em lotes de 5 arquivos por vez para um diretório com 100 arquivos MP4, para que depois fiquem 20 arquivos como:
001_005.mp4, 006_010.mp4 e assim por diante...
em vez de apenas 1 arquivo consistindo em todos os 100 arquivos.
Conteúdo de minhalista.txt:
file 001.mp4
file 002.mp4
file 003.mp4
file 004.mp4
file 005.mp4
............
file 099.mp4
file 100.mp4
Embora eu tenha encontrado um comando que funciona muito bem (a partir deste thread do StackOverflow ), ele criaria apenas 1 arquivo consistindo de todos os 100 arquivos.
#!/bin/bash
cd /home/admn/Downloads/MP4_Files;
# Create mylist.txt:
for f in *.mp4
do
echo "file $f" >> mylist.txt
done;
# Concatenate files:
ffmpeg -f concat -safe 0 -i mylist.txt -c copy output.mp4;
Então, como modifico o comando ffmpeg para que ele seja concatenado em lotes de 5 arquivos por vez.
Todos os arquivos têm exatamente a mesma resolução (1080p), codecs de áudio e vídeo.
SO: Ubuntu MATE 21.04
Versão do ffmpeg: 4.3.2-0+deb11u1ubuntu1
Acho que o script a seguir funcionará.
echo
da linha comffmpeg
para fazê-lo funcionar.Verifique se o conteúdo dos arquivos temporários
xaa' ...
xat` corresponde aos nomes (e conteúdo) dos arquivos de saída.Outra solução é usar loops aninhados.
Enquanto houver arquivos restantes, o loop interno usa
${@:1:5}
a próxima fatia de (até) 5 arquivos.Supondo que
mylist.txt
exista em seu diretório de trabalho atual, você pode fazer algo assim,