@AmadeyMinisol
full stack web-developer

Как правильно склеить видео в ffmpeg?

Добрый день, встала задача склеить несколько видео в одно (количество видео всегда разное (т.е. возможно 1, возможно 2, возможно n), собственно нагуглил такой вот пример:

ffmpeg -i new_1.mp4 -i new_2.mp4 -i new_3.mp4 -i new_4.mp4 -filter_complex "nullsrc=size=640x480 [base]; [0:v] setpts=PTS-STARTPTS, scale=320x240 [upperleft]; [1:v] setpts=PTS-STARTPTS, scale=320x240 [upperright]; [2:v] setpts=PTS-STARTPTS, scale=320x240 [lowerleft]; [3:v] setpts=PTS-STARTPTS, scale=320x240 [lowerright]; [base][upperleft] overlay=shortest=1 [tmp1]; [tmp1][upperright] overlay=shortest=1:x=320 [tmp2]; [tmp2][lowerleft] overlay=shortest=1:y=240 [tmp3]; [tmp3][lowerright] overlay=shortest=1:x=320:y=240" -c:v output.mp4


в данном примере идет склейка 4-х видео, но не совсем понимаю, возможно ли вместо upperright - писать позицию видео?

пример. положим что канва на которой работает будет 1280 на 768 и у нас есть 6 видео(все видео одинакового размера, но имеют разную продолжительность, положим что размер одного видео 1024 на 768). Пробуем разместить их в две строки, по три видео на строку. получаем следующие размеры для видео:
ширина: 1280/3 = 426 пикселей
высота: 768 / 2 = 384, где 2 - количество строк

собственно вопросы:
1) могу ли я задавать позицию видео не так [0:v] setpts=PTS-STARTPTS, scale=320x240 [upperleft];
а вот так например:
[0:v] setpts=PTS-STARTPTS, scale=426x384 [0,384];
[1:v] setpts=PTS-STARTPTS, scale=426x384 [426,384];

или как-то по другому? как правильно сделать сетку в ffmpeg?

2) в случае с видео, которые разные по времени, по истечению самого короткого видео картинка дальше тормозиться, но звуковая дорожка идет, как решить данные вопрос? подогнать короткое видео по таймингу к самому длинному? тогда как это делается? нечто вроде заполняем 4-ми кадрами остаток?

спасибо за помощь.
  • Вопрос задан
  • 1010 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Amikko
Онлайн-генерилка ffmpeg-команды для склеивания видео:
https://romander.github.io/ffmpeg-script-generator/
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы