1

I am using ffmpeg for first time and having some problem as I want to put watermark on videos.

I have done successfully that task using following command:

ffmpeg -i video.mp4 -i logo.png -filter_complex "[0:v][1:v]overlay=main_w-overlay_w-10:10" -codec:a copy out.mp4

Now problem is, I am getting watermark image with different resolution for different videos but I want fix 100x100 resolution for every video (either video is high resolution or low resolution) OR watermark with respective resolution.

There is some commands which I have tried but getting issues:

Using this command I am getting output but its increasing size of video up to double:

ffmpeg -i video.mp4 -i logo.png -filter_complex "[1:v]scale=100:100[v1];[0:v][v1]overlay=main_w-overlay_w-10:10" out.mp4

Output:

ffmpeg version N-94664-g0821bc4eee Copyright (c) 2000-2019 the FFmpeg developers
  built with gcc 9.1.1 (GCC) 20190807
  configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt
  libavutil      56. 33.100 / 56. 33.100
  libavcodec     58. 55.101 / 58. 55.101
  libavformat    58. 31.104 / 58. 31.104
  libavdevice    58.  9.100 / 58.  9.100
  libavfilter     7. 58.101 /  7. 58.101
  libswscale      5.  6.100 /  5.  6.100
  libswresample   3.  6.100 /  3.  6.100
  libpostproc    55.  6.100 / 55.  6.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'test.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.31.104
  Duration: 00:01:42.04, start: 0.000000, bitrate: 460 kb/s
    Stream #0:0(und): Video: h264 (High 4:4:4 Predictive) (avc1 / 0x31637661), yuv444p, 1080x1920 [SAR 1:1 DAR 9:16], 458 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
    Metadata:
      handler_name    : VideoHandler
Input #1, png_pipe, from 'logo.png':
  Duration: N/A, bitrate: N/A
    Stream #1:0: Video: png, rgba(pc), 119x129 [SAR 11811:11811 DAR 119:129], 25 tbr, 25 tbn, 25 tbc
Stream mapping:
  Stream #0:0 (h264) -> overlay:main
  Stream #1:0 (png) -> scale
  overlay -> Stream #0:0 (libx264)
Press [q] to stop, [?] for help
[libx264 @ 00000200b937d500] using SAR=1/1
[libx264 @ 00000200b937d500] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 @ 00000200b937d500] profile High, level 4.0, 4:2:0, 8-bit
[libx264 @ 00000200b937d500] 264 - core 158 r2984 3759fcb - H.264/MPEG-4 AVC codec - Copyleft 2003-2019 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=18 lookahead_threads=3 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'out.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.31.104
    Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661), yuv420p, 1080x1920 [SAR 1:1 DAR 9:16], q=-1--1, 25 fps, 12800 tbn, 25 tbc (default)
    Metadata:
      encoder         : Lavc58.55.101 libx264
    Side data:
      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: 18446744073709551615
frame= 2551 fps=123 q=-1.0 Lsize=    5288kB time=00:01:41.92 bitrate= 425.0kbits/s speed=4.91x
video:5259kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.543195%
[libx264 @ 00000200b937d500] frame I:12    Avg QP:13.83  size: 62825
[libx264 @ 00000200b937d500] frame P:961   Avg QP:18.60  size:  3922
[libx264 @ 00000200b937d500] frame B:1578  Avg QP:16.49  size:   546
[libx264 @ 00000200b937d500] consecutive B-frames: 12.9% 11.3%  7.8% 68.1%
[libx264 @ 00000200b937d500] mb I  I16..4: 51.2% 31.8% 17.0%
[libx264 @ 00000200b937d500] mb P  I16..4:  2.6%  3.4%  0.4%  P16..4:  4.8%  0.7%  0.5%  0.0%  0.0%    skip:87.6%
[libx264 @ 00000200b937d500] mb B  I16..4:  0.2%  0.1%  0.0%  B16..8:  5.2%  0.2%  0.0%  direct: 0.0%  skip:94.4%  L0:54.0% L1:44.6% BI: 1.4%
[libx264 @ 00000200b937d500] 8x8 transform intra:48.4% inter:48.1%
[libx264 @ 00000200b937d500] coded y,uvDC,uvAC intra: 8.3% 8.6% 5.6% inter: 0.7% 0.4% 0.2%
[libx264 @ 00000200b937d500] i16 v,h,dc,p: 51% 47%  2%  0%
[libx264 @ 00000200b937d500] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 46% 16% 35%  0%  0%  0%  0%  0%  1%
[libx264 @ 00000200b937d500] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 35% 24% 18%  3%  4%  4%  4%  4%  4%
[libx264 @ 00000200b937d500] i8c dc,h,v,p: 81% 13%  6%  0%
[libx264 @ 00000200b937d500] Weighted P-Frames: Y:1.9% UV:1.9%
[libx264 @ 00000200b937d500] ref P L0: 75.4%  6.4% 13.4%  4.7%  0.0%
[libx264 @ 00000200b937d500] ref B L0: 71.2% 26.3%  2.6%
[libx264 @ 00000200b937d500] ref B L1: 97.7%  2.3%
[libx264 @ 00000200b937d500] kb/s:422.18

I found one solution here that providing me to scale logo size but I am getting logo left-top corner side without margin.

ffmpeg -i inputvideo.mp4 -i watermarklogo.png -filter_complex "\
[1:v]scale=200:100[v1];[0:v][v1]overlay[outv]
\" -map "[outv]" output.mp4

Anyone can help?

3
  • Please show the full, uncut command line output of your second command.
    – slhck
    Commented Sep 13, 2019 at 12:29
  • @slhck question updated with output. Commented Sep 13, 2019 at 12:44
  • Is the main video suposed to have a resolution of 100x100 or the overlay? This would be a very small resolution for a video.... Commented Nov 20, 2022 at 8:40

1 Answer 1

1

Use

ffmpeg -i inputvideo.mp4 -i watermarklogo.png -filter_complex "[1:v]scale=200:100[v1];[0:v][v1]overlay=10:main_h-overlay_h-10[outv]" -map "[outv]" output.mp4

where, for example, 10px is left-bottom corner margin.

1
  • Works like a charm. To put it at bottom right corner and keep aspect ratio: -filter_complex "[1:v]scale=150:-2[v1];[0:v][v1]overlay=10:main_h-overlay_h-10[outv]" -map "[outv]"
    – Eibel
    Commented May 9, 2023 at 11:57

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .