簡體   English   中英

使用 FFMPEG 在透明 gif 上疊加圖像

[英]Overlay Image Over a transparent gif using FFMPEG

我正在嘗試使用 FFMPEG 在透明 gif 上覆蓋 png。 問題是命令運行完美,但輸出文件將透明像素轉換為黑色或白色。

我正在使用以下命令。

-i input.gif -i overlayImage.png -filter_complex "[0:v][1:v]overlay=0:0" -pix_fmt yuv420p -y output.gif

如果我還可以獲得在 gif 文件周圍添加透明填充的命令,那將是一個很大的幫助。 我給輸出文件提供了填充,同時在同一個 gif 文件上覆蓋了一個 png。

對於填充,我使用以下命令。

-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

在透明 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%

在 Gif 上覆蓋圖像並為輸出文件提供填充時記錄

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%

結合如何使用 ffmpeg 將視頻轉換為 GIF,質量合理? 使用 ffmpeg 調整視頻大小以適應特定大小

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

對於墊過濾器color=black@0將是透明的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM