Mam 15 plików wideo, które chcę scalić z ffmpeg. Chcę zaoszczędzić czas, łącząc wszystkie pliki wideo w jednym wierszu polecenia, a nie wycinaj jeden po drugim i scalaj. Dzięki.
5
Użyj demuxera konkat .
Najpierw utwórz plik tekstowy z nazwami plików.
file '1.mp4'
file '2.mp4'
file '3.mp4'
...
file '13.mp4'
file '14.mp4'
file '15.mp4'
Następnie uruchom polecenie concat.
ffmpeg -f concat -i textfile -c copy -fflags +genpts merged.mp4
Aby to zadziałało, wszystkie filmy powinny mieć takie same właściwości, jak kodek, rozdzielczość, liczba klatek na sekundę, częstotliwość próbkowania itp.
Jeśli nie są, możesz zakodować konkat.
ffmpeg -f concat -i textfile -fflags +genpts merged.mp4
Zobacz także FFmpeg Wiki: Concatenate .
Sugestia Gyana nie działała dla mnie. Wyjściowe wideo z sugerowanych poleceń miało taki sam czas trwania jak pierwsze wejście, więc brakowało treści wideo 2 i 3, a mój odtwarzacz multimedialny zawiesił się, próbując odtworzyć wyjście.
Znalazłem jednak odpowiedź w podanym przez niego źródle : http://trac.ffmpeg.org/wiki/Concatenate#filter
To polecenie działało w przypadku filmów zawierających zarówno strumienie wideo, jak i audio. W przypadku jednego filmu wideo bez dźwięku modyfikuję polecenie nieco w następujący sposób:
W efekcie właśnie usunąłem wszystkie fragmenty polecenia dotyczące dźwięku. Spowoduje to usunięcie dźwięku z drugiego i trzeciego filmu, z reguły przy użyciu tego filtra kanały pozostają takie same we wszystkich filmach.
źródło