Reputation: 143
I am trying to overlay a png over a transparent gif using FFMPEG. The problem is the command is running flawlessly but the output file in converting transparent pixels into black or white.
I am using the following command.
-i input.gif -i overlayImage.png -filter_complex "[0:v][1:v]overlay=0:0" -pix_fmt yuv420p -y output.gif
It would be a great help if I can also get the command for adding a transparent padding around the gif file. I am giving the padding to output file while overlaying a png over the same gif file.
For padding I am using following command.
-i input.gif -i overlayImage.png -filter_complex "[0]scale=512:512:force_original_aspect_ratio=decrease, format=rgba,pad=512:512:(ow-iw)/2:(oh-ih)/2:color=0x00000000[a];[a][1]overlay=0:0" -pix_fmt yuv420p -y output.gif
Logs while overlaying image over transparent Gif
2021-10-14 09:29:31.523 12728-12728/package-name I/mobile-ffmpeg: Loading mobile-ffmpeg.
2021-10-14 09:29:31.677 12728-12728/package-name I/mobile-ffmpeg: Loaded mobile-ffmpeg-video-arm64-v8a-4.4-lts-20200803.
2021-10-14 09:29:31.682 12728-13464/package-name D/mobile-ffmpeg: Callback thread started.
2021-10-14 09:29:31.685 12728-13464/package-name I/mobile-ffmpeg: ffmpeg version v4.4-dev-416
2021-10-14 09:29:31.685 12728-13464/package-name I/mobile-ffmpeg: Copyright (c) 2000-2020 the FFmpeg developers
2021-10-14 09:29:31.685 12728-13464/package-name I/mobile-ffmpeg: built with Android (6454773 based on r365631c2) clang version 9.0.8 (https://android.googlesource.com/toolchain/llvm-project 98c855489587874b2a325e7a516b99d838599c6f) (based on LLVM 9.0.8svn)
2021-10-14 09:29:31.685 12728-13464/package-name I/mobile-ffmpeg: configuration: --cross-prefix=aarch64-linux-android- --sysroot=/files/android-sdk/ndk/21.3.6528147/toolchains/llvm/prebuilt/linux-x86_64/sysroot --prefix=/home/taner/Projects/mobile-ffmpeg/prebuilt/android-arm64/ffmpeg --pkg-config=/usr/bin/pkg-config --enable-version3 --arch=aarch64 --cpu=armv8-a --cc=aarch64-linux-android21-clang --cxx=aarch64-linux-android21-clang++ --extra-libs='-L/home/taner/Projects/mobile-ffmpeg/prebuilt/android-arm64/cpu-features/lib -lndk_compat' --target-os=android --enable-neon --enable-asm --enable-inline-asm --enable-cross-compile --enable-pic --enable-jni --enable-optimizations --enable-swscale --enable-shared --enable-v4l2-m2m --disable-outdev=fbdev --disable-indev=fbdev --enable-small --disable-openssl --disable-xmm-clobber-test --disable-debug --enable-lto --disable-neon-clobber-test --disable-programs --disable-postproc --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --disable-sndio --disable-schannel --disable-securetransport --disable-xlib --disable-cuda --disable-cuvid --disable-nvenc --disable-vaapi --disable-vdpau --disable-videotoolbox --disable-audiotoolbox --disable-appkit --disable-alsa --disable-cuda --disable-cuvid --disable-nvenc --disable-vaapi --disable-vdpau --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libass --enable-iconv --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libkvazaar --enable-libsnappy --enable-libaom --disable-sdl2 --enable-zlib --enable-mediacodec
2021-10-14 09:29:31.694 12728-13464/package-name I/mobile-ffmpeg: libavutil 56. 55.100 / 56. 55.100
2021-10-14 09:29:31.695 12728-13464/package-name I/mobile-ffmpeg: libavcodec 58. 96.100 / 58. 96.100
2021-10-14 09:29:31.695 12728-13464/package-name I/mobile-ffmpeg: libavformat 58. 48.100 / 58. 48.100
2021-10-14 09:29:31.695 12728-13464/package-name I/mobile-ffmpeg: libavdevice 58. 11.101 / 58. 11.101
2021-10-14 09:29:31.695 12728-13464/package-name I/mobile-ffmpeg: libavfilter 7. 87.100 / 7. 87.100
2021-10-14 09:29:31.695 12728-13464/package-name I/mobile-ffmpeg: libswscale 5. 8.100 / 5. 8.100
2021-10-14 09:29:31.695 12728-13464/package-name I/mobile-ffmpeg: libswresample 3. 8.100 / 3. 8.100
2021-10-14 09:29:31.723 12728-13464/package-name I/mobile-ffmpeg: Input #0, gif, from '/data/user/0/package-name/files/transparent_sticker.gif':
2021-10-14 09:29:31.723 12728-13464/package-name I/mobile-ffmpeg: Duration:
2021-10-14 09:29:31.723 12728-13464/package-name I/mobile-ffmpeg: 00:00:00.40
2021-10-14 09:29:31.723 12728-13464/package-name I/mobile-ffmpeg: , start:
2021-10-14 09:29:31.723 12728-13464/package-name I/mobile-ffmpeg: 0.000000
2021-10-14 09:29:31.723 12728-13464/package-name I/mobile-ffmpeg: , bitrate:
2021-10-14 09:29:31.723 12728-13464/package-name I/mobile-ffmpeg: 33 kb/s
2021-10-14 09:29:31.723 12728-13464/package-name I/mobile-ffmpeg: Stream #0:0
2021-10-14 09:29:31.723 12728-13464/package-name I/mobile-ffmpeg: : Video: gif, bgra, 512x512
2021-10-14 09:29:31.723 12728-13464/package-name I/mobile-ffmpeg: ,
2021-10-14 09:29:31.723 12728-13464/package-name I/mobile-ffmpeg: 100 tbr,
2021-10-14 09:29:31.723 12728-13464/package-name I/mobile-ffmpeg: 100 tbn,
2021-10-14 09:29:31.723 12728-13464/package-name I/mobile-ffmpeg: 100 tbc
2021-10-14 09:29:31.748 12728-13464/package-name I/mobile-ffmpeg: Input #1, webp_pipe, from '/storage/emulated/0/Android/data/package-name/files/TrimmedVideo/overlay.png':
2021-10-14 09:29:31.748 12728-13464/package-name I/mobile-ffmpeg: Duration:
2021-10-14 09:29:31.748 12728-13464/package-name I/mobile-ffmpeg: N/A
2021-10-14 09:29:31.748 12728-13464/package-name I/mobile-ffmpeg: , bitrate:
2021-10-14 09:29:31.748 12728-13464/package-name I/mobile-ffmpeg: N/A
2021-10-14 09:29:31.748 12728-13464/package-name I/mobile-ffmpeg: Stream #1:0
2021-10-14 09:29:31.748 12728-13464/package-name I/mobile-ffmpeg: : Video: webp, yuva420p(tv, bt470bg/unknown/unknown), 512x512
2021-10-14 09:29:31.748 12728-13464/package-name I/mobile-ffmpeg: ,
2021-10-14 09:29:31.748 12728-13464/package-name I/mobile-ffmpeg: 25 tbr,
2021-10-14 09:29:31.748 12728-13464/package-name I/mobile-ffmpeg: 25 tbn,
2021-10-14 09:29:31.748 12728-13464/package-name I/mobile-ffmpeg: 25 tbc
2021-10-14 09:29:31.755 12728-13464/package-name I/mobile-ffmpeg: Stream mapping:
2021-10-14 09:29:31.755 12728-13464/package-name I/mobile-ffmpeg: Stream #0:0 (gif) -> scale
2021-10-14 09:29:31.755 12728-13464/package-name I/mobile-ffmpeg: Stream #1:0 (webp) -> overlay:overlay
2021-10-14 09:29:31.755 12728-13464/package-name I/mobile-ffmpeg: overlay
2021-10-14 09:29:31.755 12728-13464/package-name I/mobile-ffmpeg: -> Stream #0:0 (gif)
2021-10-14 09:29:31.755 12728-13464/package-name I/mobile-ffmpeg: Press [q] to stop, [?] for help
2021-10-14 09:29:31.773 12728-13464/package-name W/mobile-ffmpeg: [graph 0 input from stream 0:0 @ 0x7702da9840] sws_param option is deprecated and ignored
2021-10-14 09:29:31.773 12728-13464/package-name W/mobile-ffmpeg: [graph 0 input from stream 1:0 @ 0x7702da9900] sws_param option is deprecated and ignored
2021-10-14 09:29:31.773 12728-13464/package-name W/mobile-ffmpeg: Incompatible pixel format 'yuv420p' for codec 'gif', auto-selecting format 'bgr8'
2021-10-14 09:29:31.778 12728-13464/package-name W/mobile-ffmpeg: [swscaler @ 0x76b520cc80] No accelerated colorspace conversion found from yuva420p to bgr8.
2021-10-14 09:29:31.806 12728-13464/package-name I/mobile-ffmpeg: Output #0, gif, to '/storage/emulated/0/Android/data/package-name/files/TrimmedVideo/1634185771290.gif':
2021-10-14 09:29:31.806 12728-13464/package-name I/mobile-ffmpeg: Metadata:
2021-10-14 09:29:31.806 12728-13464/package-name I/mobile-ffmpeg: encoder :
2021-10-14 09:29:31.806 12728-13464/package-name I/mobile-ffmpeg: Lavf58.48.100
2021-10-14 09:29:31.806 12728-13464/package-name I/mobile-ffmpeg: Stream #0:0
2021-10-14 09:29:31.806 12728-13464/package-name I/mobile-ffmpeg: : Video: gif, bgr8, 512x512, q=2-31, 200 kb/s
2021-10-14 09:29:31.806 12728-13464/package-name I/mobile-ffmpeg: ,
2021-10-14 09:29:31.806 12728-13464/package-name I/mobile-ffmpeg: 100 fps,
2021-10-14 09:29:31.806 12728-13464/package-name I/mobile-ffmpeg: 100 tbn,
2021-10-14 09:29:31.806 12728-13464/package-name I/mobile-ffmpeg: 100 tbc
2021-10-14 09:29:31.806 12728-13464/package-name I/mobile-ffmpeg: (default)
2021-10-14 09:29:31.806 12728-13464/package-name I/mobile-ffmpeg: Metadata:
2021-10-14 09:29:31.806 12728-13464/package-name I/mobile-ffmpeg: encoder :
2021-10-14 09:29:31.806 12728-13464/package-name I/mobile-ffmpeg: Lavc58.96.100 gif
2021-10-14 09:29:31.839 12728-13464/package-name I/mobile-ffmpeg: frame= 2 fps=0.0 q=-0.0 Lsize= 28kB time=00:00:00.21 bitrate=1110.1kbits/s speed=2.49x
2021-10-14 09:29:31.840 12728-13464/package-name I/mobile-ffmpeg: video:28kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead:
2021-10-14 09:29:31.840 12728-13464/package-name I/mobile-ffmpeg: 0.068679%
Logs while overlaying image over Gif and giving padding to output file
2021-10-14 09:35:49.136 15236-16490/package-name I/mobile-ffmpeg: ffmpeg version v4.4-dev-416
2021-10-14 09:35:49.136 15236-16490/package-name I/mobile-ffmpeg: Copyright (c) 2000-2020 the FFmpeg developers
2021-10-14 09:35:49.136 15236-16490/package-name I/mobile-ffmpeg: built with Android (6454773 based on r365631c2) clang version 9.0.8 (https://android.googlesource.com/toolchain/llvm-project 98c855489587874b2a325e7a516b99d838599c6f) (based on LLVM 9.0.8svn)
2021-10-14 09:35:49.136 15236-16490/package-name I/mobile-ffmpeg: configuration: --cross-prefix=aarch64-linux-android- --sysroot=/files/android-sdk/ndk/21.3.6528147/toolchains/llvm/prebuilt/linux-x86_64/sysroot --prefix=/home/taner/Projects/mobile-ffmpeg/prebuilt/android-arm64/ffmpeg --pkg-config=/usr/bin/pkg-config --enable-version3 --arch=aarch64 --cpu=armv8-a --cc=aarch64-linux-android21-clang --cxx=aarch64-linux-android21-clang++ --extra-libs='-L/home/taner/Projects/mobile-ffmpeg/prebuilt/android-arm64/cpu-features/lib -lndk_compat' --target-os=android --enable-neon --enable-asm --enable-inline-asm --enable-cross-compile --enable-pic --enable-jni --enable-optimizations --enable-swscale --enable-shared --enable-v4l2-m2m --disable-outdev=fbdev --disable-indev=fbdev --enable-small --disable-openssl --disable-xmm-clobber-test --disable-debug --enable-lto --disable-neon-clobber-test --disable-programs --disable-postproc --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --disable-sndio --disable-schannel --disable-securetransport --disable-xlib --disable-cuda --disable-cuvid --disable-nvenc --disable-vaapi --disable-vdpau --disable-videotoolbox --disable-audiotoolbox --disable-appkit --disable-alsa --disable-cuda --disable-cuvid --disable-nvenc --disable-vaapi --disable-vdpau --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libass --enable-iconv --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libkvazaar --enable-libsnappy --enable-libaom --disable-sdl2 --enable-zlib --enable-mediacodec
2021-10-14 09:35:49.136 15236-16490/package-name I/mobile-ffmpeg: libavutil 56. 55.100 / 56. 55.100
2021-10-14 09:35:49.136 15236-16490/package-name I/mobile-ffmpeg: libavcodec 58. 96.100 / 58. 96.100
2021-10-14 09:35:49.136 15236-16490/package-name I/mobile-ffmpeg: libavformat 58. 48.100 / 58. 48.100
2021-10-14 09:35:49.136 15236-16490/package-name I/mobile-ffmpeg: libavdevice 58. 11.101 / 58. 11.101
2021-10-14 09:35:49.136 15236-16490/package-name I/mobile-ffmpeg: libavfilter 7. 87.100 / 7. 87.100
2021-10-14 09:35:49.136 15236-16490/package-name I/mobile-ffmpeg: libswscale 5. 8.100 / 5. 8.100
2021-10-14 09:35:49.136 15236-16490/package-name I/mobile-ffmpeg: libswresample 3. 8.100 / 3. 8.100
2021-10-14 09:35:49.147 15236-16490/package-name I/mobile-ffmpeg: Input #0, gif, from '/storage/emulated/0/Android/data/package-name/files/TrimmedVideo/1634186134864-output.gif':
2021-10-14 09:35:49.147 15236-16490/package-name I/mobile-ffmpeg: Duration:
2021-10-14 09:35:49.147 15236-16490/package-name I/mobile-ffmpeg: 00:00:02.80
2021-10-14 09:35:49.147 15236-16490/package-name I/mobile-ffmpeg: , start:
2021-10-14 09:35:49.147 15236-16490/package-name I/mobile-ffmpeg: 0.000000
2021-10-14 09:35:49.148 15236-16490/package-name I/mobile-ffmpeg: , bitrate:
2021-10-14 09:35:49.148 15236-16490/package-name I/mobile-ffmpeg: 8324 kb/s
2021-10-14 09:35:49.148 15236-16490/package-name I/mobile-ffmpeg: Stream #0:0
2021-10-14 09:35:49.148 15236-16490/package-name I/mobile-ffmpeg: : Video: gif, bgra, 288x512 [SAR 64:64 DAR 9:16]
2021-10-14 09:35:49.148 15236-16490/package-name I/mobile-ffmpeg: ,
2021-10-14 09:35:49.148 15236-16490/package-name I/mobile-ffmpeg: 10 fps,
2021-10-14 09:35:49.148 15236-16490/package-name I/mobile-ffmpeg: 10 tbr,
2021-10-14 09:35:49.148 15236-16490/package-name I/mobile-ffmpeg: 100 tbn,
2021-10-14 09:35:49.148 15236-16490/package-name I/mobile-ffmpeg: 100 tbc
2021-10-14 09:35:49.151 15236-16490/package-name I/mobile-ffmpeg: Input #1, png_pipe, from '/storage/emulated/0/Android/data/package-name/files/TrimmedVideo/overlay_image.png':
2021-10-14 09:35:49.151 15236-16490/package-name I/mobile-ffmpeg: Duration:
2021-10-14 09:35:49.151 15236-16490/package-name I/mobile-ffmpeg: N/A
2021-10-14 09:35:49.151 15236-16490/package-name I/mobile-ffmpeg: , bitrate:
2021-10-14 09:35:49.151 15236-16490/package-name I/mobile-ffmpeg: N/A
2021-10-14 09:35:49.151 15236-16490/package-name I/mobile-ffmpeg: Stream #1:0
2021-10-14 09:35:49.151 15236-16490/package-name I/mobile-ffmpeg: : Video: png, rgba(pc), 512x512
2021-10-14 09:35:49.151 15236-16490/package-name I/mobile-ffmpeg: ,
2021-10-14 09:35:49.151 15236-16490/package-name I/mobile-ffmpeg: 25 tbr,
2021-10-14 09:35:49.151 15236-16490/package-name I/mobile-ffmpeg: 25 tbn,
2021-10-14 09:35:49.151 15236-16490/package-name I/mobile-ffmpeg: 25 tbc
2021-10-14 09:35:49.153 15236-16490/package-name I/mobile-ffmpeg: Stream mapping:
2021-10-14 09:35:49.154 15236-16490/package-name I/mobile-ffmpeg: Stream #0:0 (gif) -> scale
2021-10-14 09:35:49.154 15236-16490/package-name I/mobile-ffmpeg: Stream #1:0 (png) -> overlay:overlay
2021-10-14 09:35:49.154 15236-16490/package-name I/mobile-ffmpeg: overlay
2021-10-14 09:35:49.154 15236-16490/package-name I/mobile-ffmpeg: -> Stream #0:0 (gif)
2021-10-14 09:35:49.154 15236-16490/package-name I/mobile-ffmpeg: Press [q] to stop, [?] for help
2021-10-14 09:35:49.159 15236-16490/package-name I/mobile-ffmpeg: frame= 0 fps=0.0 q=0.0 size= 0kB time=-577014:32:22.77 bitrate= -0.0kbits/s speed=N/A
2021-10-14 09:35:49.163 15236-16490/package-name W/mobile-ffmpeg: [graph 0 input from stream 0:0 @ 0x778fc3cec0] sws_param option is deprecated and ignored
2021-10-14 09:35:49.164 15236-16490/package-name W/mobile-ffmpeg: [graph 0 input from stream 1:0 @ 0x778fc3cf80] sws_param option is deprecated and ignored
2021-10-14 09:35:49.164 15236-16490/package-name W/mobile-ffmpeg: Incompatible pixel format 'yuv420p' for codec 'gif', auto-selecting format 'bgr8'
2021-10-14 09:35:49.166 15236-16490/package-name W/mobile-ffmpeg: [swscaler @ 0x7734461980] No accelerated colorspace conversion found from yuva420p to bgr8.
2021-10-14 09:35:49.234 15236-16490/package-name I/mobile-ffmpeg: Output #0, gif, to '/storage/emulated/0/Android/data/package-name/files/TrimmedVideo/sticker.gif':
2021-10-14 09:35:49.234 15236-16490/package-name I/mobile-ffmpeg: Metadata:
2021-10-14 09:35:49.234 15236-16490/package-name I/mobile-ffmpeg: encoder :
2021-10-14 09:35:49.234 15236-16490/package-name I/mobile-ffmpeg: Lavf58.48.100
2021-10-14 09:35:49.235 15236-16490/package-name I/mobile-ffmpeg: Stream #0:0
2021-10-14 09:35:49.235 15236-16490/package-name I/mobile-ffmpeg: : Video: gif, bgr8, 512x512 [SAR 1:1 DAR 1:1], q=2-31, 200 kb/s
2021-10-14 09:35:49.235 15236-16490/package-name I/mobile-ffmpeg: ,
2021-10-14 09:35:49.235 15236-16490/package-name I/mobile-ffmpeg: 10 fps,
2021-10-14 09:35:49.235 15236-16490/package-name I/mobile-ffmpeg: 100 tbn,
2021-10-14 09:35:49.235 15236-16490/package-name I/mobile-ffmpeg: 10 tbc
2021-10-14 09:35:49.235 15236-16490/package-name I/mobile-ffmpeg: (default)
2021-10-14 09:35:49.235 15236-16490/package-name I/mobile-ffmpeg: Metadata:
2021-10-14 09:35:49.235 15236-16490/package-name I/mobile-ffmpeg: encoder :
2021-10-14 09:35:49.235 15236-16490/package-name I/mobile-ffmpeg: Lavc58.96.100 gif
2021-10-14 09:35:49.704 15236-16490/package-name I/mobile-ffmpeg: frame= 14 fps=0.0 q=-0.0 size= 512kB time=00:00:01.31 bitrate=3201.8kbits/s speed=2.54x
2021-10-14 09:35:50.201 15236-16490/package-name I/mobile-ffmpeg: frame= 28 fps= 27 q=-0.0 size= 1024kB time=00:00:02.71 bitrate=3095.4kbits/s speed=2.59x
2021-10-14 09:35:50.201 15236-16490/package-name I/mobile-ffmpeg: frame= 28 fps= 27 q=-0.0 Lsize= 1260kB time=00:00:02.71 bitrate=3809.1kbits/s speed=2.59x
2021-10-14 09:35:50.202 15236-16490/package-name I/mobile-ffmpeg: video:1260kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead:
2021-10-14 09:35:50.202 15236-16490/package-name I/mobile-ffmpeg: 0.001550%
Upvotes: 3
Views: 1304
Reputation: 133693
Combine answers from How do I convert a video to GIF using ffmpeg, with reasonable quality? and Resizing videos with ffmpeg to fit into specific size.
ffmpeg -i input.gif -i logo.png -filter_complex "[0]scale=512:512:force_original_aspect_ratio=decrease,pad=512:512:-1:-1:color=black@0[bg];[bg][1]overlay=format=auto,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" output.gif
For pad filter color=black@0
will be transparent.
Upvotes: 1