ffmpeg наложение округленных углов вебкам видео на основное видео

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

Я пытаюсь наложить видео с веб-камеры поверх основного видео, сделать углы веб-камеры закругленными и разместить его в левом нижнем углу основного видео. Я также хочу, чтобы видео с веб-камеры уменьшилось до размеров 400×225. Я новичок в ffmpeg, кто-нибудь может помочь.

ИНФО

main.mp4:- 1920×1080, 60fps, есть звук
webcam.mp4:- 1280×1920, 60fps, есть звук

Код, который я пробовал:

ffmpeg -i main_video.mp4 -i webcam_video.mp4 -filter_complex "[1:v]scale=400:225[scaled];[0:v][scaled]overlay=10:845" -c:a copy output_video.mp4

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

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

Чтобы наложить видеопоток с веб-камеры на основное видео с закругленными углами, вы можете использовать ffmpeg. Давайте рассмотрим, как это можно сделать, шаг за шагом.

Шаг 1: Установка ffmpeg

Если вы ещё не установили ffmpeg, вам необходимо это сделать. Вы можете загрузить его с официального сайта ffmpeg и следовать инструкциям по установке для вашей операционной системы.

Шаг 2: Команда ffmpeg

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

Вот пример команды, который выполняет вашу задачу:

ffmpeg -i main.mp4 -i webcam.mp4 -filter_complex "
[1:v]scale=400:225[scaled];
[scaled]format=rgba,colorchannelmixer=.5:.5:.5:0:0:0:0:0:0[scaledWithAlpha];
[scaledWithAlpha]drawbox=x=0:y=0:w=400:h=225:color=black@0.0:t=fill, \
format=rgba,geq='if(gte(X\,20),if(gte(Y\,20),if(lte(X\,w-20),if(lte(Y\,h-20),255\,0)\,0)\,0)\,0)\,0)':0:rgb \
[borderedWebcam];
[0:v][borderedWebcam]overlay=10:885
" -c:a copy output_video.mp4

Разбор команды

  • -i main.mp4 и -i webcam.mp4: определяет входные файлы.
  • [1:v]scale=400:225[scaled]: изменяет размер видео с веб-камеры до 400×225 пикселей.
  • [scaled]format=rgba: преобразует видео в формат RGBA для правильной обработки альфа-канала.
  • colorchannelmixer=.5:.5:.5:0:0:0:0:0:0[scaledWithAlpha]: смешивает цвета, как необходимо для создаваемой маски.
  • drawbox: создает черный прямоугольник (или массив) для наложения.
  • geq: здесь мы применяем фильтр для создания маски с закругленными углами. Он проверяет соответствующие координаты и подает 255 (белый или непрозрачный) или 0 (черный или прозрачный) в зависимости от положения пикселя.
  • [0:v][borderedWebcam]overlay=10:885: накладывает видео с веб-камеры на основное видео, указывая позицию в пикселях.

Шаг 3: Запуск команды

Теперь вы готовы запустить эту команду в вашей командной строке. Убедитесь, что пути к вашим видеофайлам правильные и что у вас есть разрешение для выполнения этой команды.

Заключение

Следуя данным шагам и используя предложенную команду, вы сможете успешно наложить видео с веб-камеры на основной видеотрек с закругленными углами. Этот подход позволяет вам настроить внешний вид видео и достичь желаемого результата, даже если вы только начинаете работать с ffmpeg.

Если у вас возникнут дополнительные вопросы или дополнительные настройки, не стесняйтесь обращаться за помощью!

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

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