вставить зацикленный видео в другое видео с помощью ffmpeg

Вопрос или проблема

Я использую эту команду, чтобы вставить видео .mov с альфа-каналом в фоновое видео. Но видео с альфа-каналом воспроизводится только один раз. Как мне использовать команду -loop и могу ли я использовать зацикливание каждые 30 секунд?

ffmpeg -i "output_all.mp4" -i "logo\logovid.mov" -filter_complex "[1:v]scale=in_w/2:-2[over];[0:v][over]overlay=main_w-overlay_w-5:50" -codec:v:0 libx264 -b:v 3M "final\gotovo.mp4"

Ответ или решение

Для вставки циклического видео с альфа-каналом в другое видео с использованием FFmpeg и одновременной настройкой на повторы каждые 30 секунд, вам необходимо внести изменения в ваш исходный код. Ваша текущая команда не позволяет наложенному видео повторяться, так как оно проигрывается только один раз.

Решение проблемы

Для того чтобы видео с альфа-каналом воспроизводилось циклически каждые 30 секунд, можно воспользоваться фильтром loop, который повторит его заданное количество раз. Однако т.к. вы хотите, чтобы это происходило каждые 30 секунд, нам нужно определить количество повторений, основываясь на длительности вашего видео с альфа-каналом.

Вот пример команды с подробным объяснением:

ffmpeg -i "output_all.mp4" -stream_loop -1 -i "logo/logovid.mov" -filter_complex "[1:v]scale=in_w/2:-2,loop=loop=1:size=1:start=0,trim=end=30[over];[0:v][over]overlay=main_w-overlay_w-5:50" -codec:v libx264 -b:v 3M "final/gotovo.mp4"

Объяснение параметров:

  1. -stream_loop -1: Эта опция указывает FFmpeg зациклить вводимое видео (logovid.mov) бесконечно. Однако это может повлечь бесполезные затраты по времени обработки, если видео длиннее 30 секунд.

  2. scale=in_w/2:-2: Масштабируется входное видео с альфа-каналом до половины ширины, чтобы уместиться в общий видеоряд.

  3. loop=loop=1:size=1:start=0: Этот фильтр создает циклы для видео с альфа-каналом. В данном случае опция loop настроена на 1 цикл, что означает повторение.

  4. trim=end=30: Обрезает видео до 30 секунд. Это обозначает, что от видеопотока с альфа-каналом будет взята только первая 30-секундная часть видео.

  5. overlay=main_w-overlay_w-5:50: Этот фильтр накладывает ваше видео с логотипом в заданной позиции. В данном случае логотип будет размещён в правом верхнем углу с отступом в 5 пикселей от правого края и 50 пикселей от верхнего.

  6. -codec:v libx264 -b:v 3M: Эти параметры определяют кодек для выходного видео и устанавливают его битрейт, что в свою очередь влияет на качество выходного файла.

Заключение

Таким образом, для вставки видео с альфа-каналом в другое видео в FFmpeg с настройкой его циклического воспроизведения каждые 30 секунд, необходимо использовать комбинацию фильтров для масштабирования, цикла и обрезки. Данный подход позволяет создать более динамичное видео, добавив визуальные акценты в заданный промежуток времени.

Не забывайте тестировать каждую из ваших композиций, чтобы убедиться в правильном воспроизведении и отсутствию артефактов на выходном файле.

Оцените материал
Добавить комментарий

Капча загружается...