Как добавить водяной знак в виде gif и текста на видео с помощью ffmpeg

Я пытаюсь добавить GIF и текст на видео, используя ffmpeg, что-то вроде tiktok. хочу, чтобы это было как в тиктоке, т.е. вверху справа гифка и текст, а через некоторое время слева внизу такая же гифка и текст на видео.


person user1872811    schedule 31.07.2020    source источник


Ответы (3)


ffmpeg -i video.mp4 -ignore_loop 0 -i logo.gif -filter_complex "[0:v][1:v]overlay=x=10:y=10:format=auto:enable='lte(t,5)':shortest=1[bg];[bg][1:v]overlay=x=main_w-overlay_w-10:y=main_h-overlay_h-20:format=auto:enable='gte(t,5)':shortest=1,drawtext=text='@user1872811':fontsize=16:fontcolor=white:x=10:y=40:enable='lte(t,5)',drawtext=text='@user1872811':fontsize=16:fontcolor=white:x=w-tw-10:y=h-th-10:enable='gte(t,5)',format=yuv420p[v]" -map "[v]" -c:v libx264 -crf 18 -map 0:a -c:a copy -movflags +faststart output.mp4

Вам нужно будет настроить позиции x и y для наложения и отрисовки текста в зависимости от ширины x высоты GIF.

Адаптированы из:

Также см:

person llogan    schedule 01.08.2020
comment
спасибо, это работает, но качество видео очень плохое .. есть идеи, как получить такое же качество видео? - person user1872811; 12.08.2020
comment
куда добавить эту опцию? после какой команды в основном? - person user1872811; 02.09.2020
comment
подскажите, пожалуйста, как сделать сначала справа вверху, а потом слева внизу? - person user1872811; 07.09.2020
comment
@user1872811 user1872811 Смотрите ссылки в ответе Как расположить текст drawtext или Как добавить водяной знак с помощью ffmpeg? - person llogan; 08.09.2020

Цикл слева направо и сверху вниз:

ffmpeg -i video.mp4 -i watermark.png -filter_complex \
 "[0:v][1:v]overlay=x='if(lt(mod(t,10),5),10,W-w-10)':y='if(lt(mod(t,10),5),10,H-h-10)'" \
 -codec:a copy out.mp4

Петля сверху справа и снизу слева:

ffmpeg -i video.mp4 -i watermark.png -filter_complex \
 "[0:v][1:v]overlay=x='if(lt(mod(t,10),5),W-w-10,10)':y='if(lt(mod(t,10),5),10,H-h-10)'" \ 
 -codec:a copy out.mp4

Идея очень проста

  • Возьмите каждые 10 секунд продолжительности, получите остаток секунды, т.е. мод (t, 10)
  • если sec ‹ 5, установить верхнее положение, иначе нижнее положение

Обратите внимание, что я исключил текст, т.е. имя пользователя.

person Ramesh Jangama    schedule 03.02.2021

ffmpeg -y -i out.mp4 -i 1080_Happy_Holidays_Red_Videvo.mov -i logo.png -filter_complex [0]scale=iw/4:-1[pip];[1][pip]overlay=100:100[водяной знак]; [водяной знак][2]overlay=main_w-overlay_w-10:main_h-overlay_h-10 output.mp4

У вас есть больше примеров на моем сайте, но здесь запрещено указывать URL. Отправить мне личное сообщение

person Seb    schedule 01.08.2020
comment
не могли бы вы объяснить свой ответ? - person user1872811; 01.08.2020
comment
что за сайт? - person user1872811; 01.08.2020