[FFmpeg-user] How to scale watermark proportionally to width and height of video frame?
Frank Tetzel
s1445051 at mail.zih.tu-dresden.de
Mon Jan 19 17:02:19 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
Greetings,
Frank.
More information about the ffmpeg-user
mailing list