2

Я хотел бы применить наложение PNG (водяной знак) к произвольному видеофайлу с помощью ffmpeg. Мне бы хотелось, чтобы видео оставалось в своем первоначальном размере (о котором я не знаю заранее), а PNG масштабировалось относительно видео.

Например, следующая команда помещает оверлей вверху слева:

ffmpeg.exe -i input.mov -i header.png -filter_complex \
    "[0][1] overlay=0:0" output.mkv

И следующая команда масштабирует оверлей относительно себя (1/5 ширины, высоты относительно):

ffmpeg.exe -i input.mov -i header.png -filter_complex \
    "[1] scale=iw/5:-1 [scaled]; \
    [0][scaled] overlay=0:0" output.mkv

Как сделать оверлей на 1/5 ширины input.mov? (Например, возможно ли сохранить и / или запросить ширину другого предложения фильтра?)

Самый близкий вопрос, с которым я столкнулся, это наложение водяного знака Scale на размер видео с помощью ffmpeg, но в этом ответе используются внешние команды Linux/Cygwin. Водяной знак FFmpeg также был полезен, пока я выяснял ffmpeg. Тем не менее, я нахожусь в Windows и вызываю ffmpeg через Python, поэтому я хотел бы сделать все это в предложении filter_complex. Если это невозможно, я хотел бы знать наверняка, чтобы я мог перестать пытаться :)

1 ответ1

3

Мой подход - две отдельные команды: одна для расчета размеров, а другая для наложения. Вы можете просто использовать FFprobe который поставляется вместе с FFmpeg. Для расчета размеров вы можете использовать следующую команду.

ffprobe -v error -show_entries stream=width,height -of default=noprint_wrappers=1 input_video

Это приведет к следующему.

ширина = 1280

высота = 720

После того, как вы можете делать то, что хотите, и применять это к своей команде наложения. Также здесь есть еще несколько вариантов масштабирования.

Надеюсь это поможет!

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