[FFmpeg-user] How to scale watermark proportionally to width and height of video frame?

Барт Гопник bart.gopnik at gmail.com
Tue Jan 20 07:50:50 CET 2015


>> How to scale watermark proportionally video frame size (to width and
>> to height of video frame)?
>>
>> Now I use the following command:
>>
>> ffmpeg -i input.mkv -i logo.png -filter_complex
>> "[1:v]scale=w=iw/3:h=ih/3[watermark_scaled];[0:v][watermark_scaled]overlay=x=main_w-overlay_w-main_w/20:y=main_h-overlay_h-main_w/20"
>> output.mkv
>>
>> I use scale=w=iw/3:h=ih/3, but I can't use "main_w" and "main_h"
>> variables in this place. E.g. scale=w=main_w*0.05:main_h*0.05 don't
>> work. How to get video frame width and height to use them for scaling
>> watermark?
>
> Hello,
>
> as far as i know, it is not possible. You have to get the video
> dimension on an outer layer, like a shell script, and pass it to the
> scale filter. All filters only know about their inputs, not about other
> filter chains.
>
> Something like:
>
> streaminfo=`mktemp`
> ffprobe -v quiet -show_streams -select_streams v:0 input.mkv >$streaminfo
> width=`grep width $streaminfo | cut -d'=' -f2`
> height=`grep height $streaminfo | cut -d'=' -f2`
>
> ffmpeg -i input.mkv -i logo.png -filter_complex
> "[1:v]scale=w=$width/3:h=$height/3[watermark_scaled];[0:v][watermark_scaled]overlay=x=main_w-overlay_w-main_w/20:y=main_h-overlay_h-main_w/20"
> output.mkv
>
> rm $streaminfo

I'm using Windows. Can anyone help me solve this issue for Windows?

Hope for your help! Thanks in advance!


More information about the ffmpeg-user mailing list