Я запускаю несколько запусков фильтра ffmpeg concat для нескольких файлов, используя сценарий пакетного файла Windows.Я не всегда знаю, сколько именно файлов нужно объединить, и проблема в том, что ffmpeg не объединяет автоматически входные данные, если вы не отобразите их все.Например, если мне нужно объединить восемь файлов, я использую следующую схему сопоставления фильтров:
-filter_complex "[0][1][2][3][4][5][6][7]concat=n=8:v=1:a=0"
Если мне нужно объединить только 4 файла позже в сценарии, я должен изменить его на:
-filter_complex "[0][1][2][3]concat=n=4:v=1:a=0"
Я надеялся, что если не ввести какое-либо отображение, все входы будут автоматически упорядочены.Я разочарован, обнаружив, что он берет только первые два и игнорирует остальные.Я попытался просто:
-filter_complex "concat"
, и он «угадал» отображение в соответствии с предупреждениями, но полностью проигнорировал все входные данные после второго.
Нет способа сделать это только с помощью ffmpeg,поэтому я ищу способ сделать это с помощью пакетного сценария Windows.
Пример полной и рабочей команды:
set commands=-filter_complex "[0][1][2][3][4][5][6][7]concat=n=8:v=1:a=0","crop=1064:800" /
-crf 30 -an -movflags +faststart -loglevel quiet -stats
ffmpeg -ss 00:00:36.737 -t 00:13:33.630 -i 1201.avi /
-ss 00:00:00.000 -t 00:13:51.397 -i 1202.avi /
-ss 00:00:00.033 -t 00:13:06.052 -i 1203.avi /
-ss 00:00:00.000 -t 00:17:31.617 -i 1204.avi /
-ss 00:17:31.551 -t 00:00:00.067 -i 1204.avi /
-ss 00:00:00.000 -t 00:15:07.907 -i 1205.avi /
-ss 00:15:07.840 -t 00:00:00.067 -i 1205.avi /
-ss 00:00:00.000 -t 00:02:36.990 -i 1206.avi /
%commands% 12-concat.mp4
Моя цель в том, чтобы я мог установить commands
(и / или другие переменные) один раз в сценариивместо того, чтобы менять его каждый раз, когда команда имеет больше или меньше входов.