Фильтр scale может сделать это:
если вы хотите изменить размер входного видео до определенного размера, например 640x480, независимо от его размера и формата изображения, то:ffmpeg -i INPUT -filter_complex [0:v]scale=640:480[Scaled] -map [Scaled] OUTPUT .
но не сохранение формата изображения может привести к появлению неприглядных видеороликов. поэтому, если вы хотите изменить размер входного видео и сохранить соотношение сторон, укажите одно из измерений и укажите -2 для другого:ffmpeg -i INPUT -filter_complex [0:v]scale=-2:480[Scaled] -map [Scaled] OUTPUT .
(и 3.) Объединить несколько потоков можно с помощью фильтра concat :
Команда ниже объединит три видеопотока (отбросит аудиопотоки, если они существуют):ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex [0:v][1:v][2:v]concat=n=3:v=1:a=0[Merged] -map [Merged] OUTPUT .
Вся команда, которая сделает для вас, будет примерно такой:
ffmpeg -i VideoBefore.mp4 -i MainVideo.mp4 -i VideoAfter.mp4 -i Audio.mp3 -filter_complex [1:v]scale=-2:480,setsar=sar=1[Scaled];[0:v][Scaled][2:v]concat=n=3:v=1:a=0[Merged] -map [Merged] -map 3:a OUTPUT.mp4
Важное примечание : документация фильтра concat гласит: все соответствующие потоки должны иметь одинаковые параметры во всех сегментах; система фильтрации автоматически выберет общий формат пикселей для видеопотоков, а также общий формат выборки, частоту дискретизации и разметку канала для аудиопотоков, но другие параметры, такие как разрешение, должны быть явно преобразованы пользователем. Атрибут SAR (примерное соотношение сторон) часто составляет 1: 1. но фильтр scale изменит это. и нам нужно изменить это снова, чтобы быть равным другим потокам. фильтр setsar делает это.