1

У меня есть файл PNG (альфа) и видео файл. Я хочу создать видео, в котором первая дорожка - это изображение, а вторая - видео (PNG поверх видео). Проблема в том, что PNG не сохраняет прозрачность.

Мне нужно создать водяной знак (PNG) на отдельной дорожке с ffmpeg поверх видео дорожки.

ffmpeg -i base.mov -i logo.png -map 0 -map 1 output.mov

1 ответ1

3

Синтаксис для добавления водяного знака немного отличается. Для этого вам нужны видео фильтры, которые уже поставляются в комплекте с FFmpeg.

Я не уверен, что вы можете добавить прозрачный водяной знак на отдельную дорожку. Причина в том, что само изображение ("поток" PNG) необходимо превратить в реальную видеодорожку (например, с x264) - и поскольку на этом этапе видеокодеры не поддерживают прозрачность, вы не получите прозрачное изображение ,


Следующее добавит logo.png к base.mov в верхнем правом углу. Вы можете использовать следующие параметры, чтобы определить положение - в моем примере я просто поместил его в десяти пикселях от границы:

  • main_w (ширина основного видео)
  • main_h (высота основного видео)
  • overlay_w (ширина наложения видео)
  • overlay_h (видео с наложением)

Команда фильтра будет тогда:

movie='logo.png' [logo]; [in][logo] overlay=main_w-overlay_w-10:10 [out]

Превращая это в полную команду FFmpeg:

ffmpeg -i base.mov -vf "movie='logo.png' [logo]; [in][logo] overlay=main_w-overlay_w-10:10 [out]" -c:v libx264 -crf 20 out.mov

Параметры -c:v libx264 -crf 20 определяют выходной видеокодек и его качество (где CRF, вероятно, будет от 19 до 24, в зависимости от того, какое качество вы хотите; чем ниже, тем лучше).

Здесь есть довольно хороший пост в блоге на эту тему: Как сделать водяные знаки с помощью FFmpeg. Это входит в детали позиционирования.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .