@Dwellss

Какая правильно отмасштабировать ватермарк на видео?

Друзья, двое суток потратил на эксперименты, сдаюсь.
Не могу понимать логику работы scale в ffmpeg
Вот такая команда:
ffmpeg -y -i "$file" -i watermark.png -filter_complex "[1]scale=iw*3.0:-1[wm];[0][wm]overlay=x=(W-w)/2:y=(H-h)/2" "out/$file"

Размер watermark.png 347х21
В результате на разной ширине видео - разные результаты.
При ширине 1440 - все ок
1280 - уже логотип больше, чем нужно
496 - логотип тупо выходит за рамки видео

scale=iw*3.0:-1 - игрался с параметрами, но не получается сделать так, чтобы логотип НА ВСЕХ видео с разной шириной был реально пропорциональной ширины.

Я, видимо, саму логику не понимаю того, как масштабировать логотип. Он у меня 347х21, длинная надпись.

У меня задача: сделать так, чтобы ширина логотипа была либо оригинальной, либо не больше 90% от экрана.
Помогите, пожалуйста...
  • Вопрос задан
  • 45 просмотров
Пригласить эксперта
Ответы на вопрос 1
Вариант 1. в скрипте получать размеры очередного видео, вычислять правильный размер лого и делать копию PNG нужного размера. Остаётся ffmpeg'ом наложить без масштабирования. Так оно и быстрее, наверное, будет.

Вариант 2. вместо фильтра scale использовать похожий фильр scale2ref – он позволяет брать размеры одного входа, для масштабирования другого.

ffmpeg -i "$file" -i "$wm" \
  -filter_complex "[1][0:v]scale2ref=w='min(347, iw * 9/10)':h=ow/main_dar[logo][vid];
    [vid][logo]overlay=x=(W-w) / 2:y=H - 2 * h[v]" \
  -map [v]:v  -map 0:a \
  -y "$file-out.mp4"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы