Как добавить свой логотип на первые 30 секунд видео с помощью ffmpeg?

Как добавить свой логотип на первые 30 секунд видео с помощью ffmpeg?

Я пытаюсь добавить свой логотип на первые 30 секунд видео с помощью ffmpeg. У меня есть видео с названием d1.mp4и логотип с названием logo.png.

При запуске видео водяной знак должен находиться в верхнем левом или верхнем правом углу видео и исчезнуть через 30 секунд.

Можете ли вы показать мне, как это добавить?

решение1

ffmpeg -i in.mp4 -framerate 30000/1001 -loop 1 -i logo.png -filter_complex
  "[1:v] fade=out:st=30:d=1:alpha=1 [ov]; [0:v][ov] overlay=10:10 [v]" -map "[v]"
  -map 0:a -c:v libx264 -c:a copy -shortest out.mp4

Это предполагает, что логотип представляет собой одно неподвижное изображение с альфа-каналом, и вы хотите наложить его на видео с частотой кадров 30000/1001 (скорость NTSC). Измените так, -framerateчтобы он соответствовал вашему входному видео, если он отличается. Если ваш логотип представляет собой видео, то опустите -framerate 30000/1001 -loop 1. Если у логотипа нет альфа-канала, добавьте его, вставив, например, format=yuva420p,непосредственно перед fade.

Это отобразит логотип в позиции x,y 10,10 в течение 30 секунд, после чего последует затухание на 1 секунду.

решение2

С использованиемoverlayвидеофильтрчтобы добавить логотип к видео:

введите описание изображения здесь

ffmpeg -i video.mp4 -i logo.png -filter_complex "[0:v][1:v]overlay" \
-codec:a copy out.mp4

Чтобы понять эту команду, вам нужно знать, что такоеспецификатор потокаи чтениеВведение в фильтрацию FFmpegпоможет. [0:v]относится к видеопотоку(ам) первого входа ( video.mp4), а [1:v]относится к видеопотоку второго входа ( logo.mp4). Вот как вы можете узнать, overlayкакие входы использовать. Вы можете опустить [0:v][1:v], и overlayэто все равно будет работать, но рекомендуется быть явным и не полагаться на неизвестные значения по умолчанию.

По умолчанию логотип будет размещен в левом верхнем углу.

Использование -codec:a copyволипотоковое копированиеаудио. Это просто повторно мультиплексирует аудио вместо его повторного кодирования. Думайте об этом как о "копировании и вставке" аудио.

Перемещение логотипа

В этом примере логотип переместится на 10 пикселей вправо и на 10 пикселей вниз: введите описание изображения здесь

ffmpeg -i video.mp4 -i logo.png -filter_complex "[0:v][1:v]overlay=10:10" \
-codec:a copy out.mp4

В этом примере логотип переместится на 10 пикселей справа и на 10 пикселей вниз:

введите описание изображения здесь

ffmpeg -i video.mp4 -i logo.png -filter_complex \
"[0:v][1:v]overlay=main_w-overlay_w-10:10" -codec:a copy out.mp4

main_wотносится к ширине «основного» ввода (фон или [0:v]), и overlay_wотносится к ширине «наложенного» ввода (логотип или [1:v]). Таким образом, в примере это можно перевести как overlay=320-90-10:10или overlay=220:10.

Расчет времени наложения

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

В этом примере логотип будет отображаться в течение 30 секунд:

ffmpeg -i video.mp4 -i logo.png -filter_complex \
"[0:v][1:v]overlay=10:10:enable=between(t\,0\,30)" -codec:a copy out.mp4

Если вы хотите сделать логотип более блеклым, см.ответ mark4o.

Связанный контент