Я хочу наложить изображение с настройкой непрозрачности
Я знаю, как наложить изображение на видео, но не понимаю, как установить уровень его непрозрачности. Я могу легко добавить водяной знак на свое видео, но этот водяной знак имеет непрозрачность 100%:
Но как сделать так, чтобы файл изображения имел непрозрачность 50%?
Пример:
ffmpeg -i in.mp4 -i image.png -af "pan=stereo|c0<c0+c2|c1<c1+c3,aeval=val(0)|val(1),volume=1.6" -vf "opacity=0.5" out.mp4
[AVFilterGraph @ 0000000000316dc0] Такого фильтра нет: «opacity» Ошибка открытия фильтров!
решение1
Используйте команду ниже.
ffmpeg -i in.mp4 -i image.png \
-af "pan=stereo|c0<c0+c2|c1<c1+c3,aeval=val(0)|val(1),volume=1.6" \
-filter_complex "[1]geq=r='r(X,Y)':a='0.5*alpha(X,Y)'[a];[0][a]overlay" out.mp4
Устанавливает a='0.5*alpha(X,Y)'
альфа, т.е. непрозрачность.
Фильтр geq
не определяет автоматически, является ли вход RGB или YUV, и берет сигнал от наличия выражения одной из неальфа-плоскостей, поэтому одну из них нужно указать. Я указал выражение для плоскости R и установил его на идентичность, поэтому оно не изменяется.