![通过 FFMPEG 调整透明 GIF 大小时出现带状/尾随](https://linux22.com/image/1584922/%E9%80%9A%E8%BF%87%20FFMPEG%20%E8%B0%83%E6%95%B4%E9%80%8F%E6%98%8E%20GIF%20%E5%A4%A7%E5%B0%8F%E6%97%B6%E5%87%BA%E7%8E%B0%E5%B8%A6%E7%8A%B6%2F%E5%B0%BE%E9%9A%8F.png)
我正在尝试使用 ffmpeg 调整透明 gif 的大小。链接在这里
这是我用来调整 GIF 大小的命令
ffmpeg -i default.gif -filter_complex "[0:v] scale=320:-1:flags=lanczos,split [a][b]; [a] palettegen=reserve_transparent=on:transparency_color=ffffff [p]; [b][p] paletteuse" resize.gif
问题出在输出上。我不确定如何最好地描述它,但可以说输出 GIF 具有巨大的“带状/拖尾”效果(不是所需的)。
文件的示例输出在这里这里输出
我不知道我做错了什么以及如何修复这种带状/拖尾效果。
我在 macOS Mojave 上使用 FFMPEG,ffmpeg 版本是 4.1.1。以下是命令的输出
ffmpeg version 4.1.1 Copyright (c) 2000-2019 the FFmpeg developers
built with Apple LLVM version 10.0.0 (clang-1000.11.45.5)
configuration: --prefix=/usr/local/Cellar/ffmpeg/4.1.1 --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags='-I/Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home/include -I/Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home/include/darwin' --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libbluray --enable-libmp3lame --enable-libopus --enable-librubberband --enable-libsnappy --enable-libtesseract --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librtmp --enable-libspeex --enable-videotoolbox --disable-libjack --disable-indev=jack --enable-libaom --enable-libsoxr
libavutil 56. 22.100 / 56. 22.100
libavcodec 58. 35.100 / 58. 35.100
libavformat 58. 20.100 / 58. 20.100
libavdevice 58. 5.100 / 58. 5.100
libavfilter 7. 40.101 / 7. 40.101
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 3.100 / 5. 3.100
libswresample 3. 3.100 / 3. 3.100
libpostproc 55. 3.100 / 55. 3.100
Input #0, gif, from 'ear_s_01.gif':
Duration: N/A, bitrate: N/A
Stream #0:0: Video: gif, bgra, 640x480, 12.50 fps, 12.50 tbr, 100 tbn, 100 tbc
Stream mapping:
Stream #0:0 (gif) -> scale
paletteuse -> Stream #0:0 (gif)
Press [q] to stop, [?] for help
Output #0, gif, to 'resize.gif':
Metadata:
encoder : Lavf58.20.100
Stream #0:0: Video: gif, pal8, 320x240, q=2-31, 200 kb/s, 12.50 fps, 100 tbn, 12.50 tbc
Metadata:
encoder : Lavc58.35.100 gif
[Parsed_palettegen_2 @ 0x7f7f19001180] 255(+1) colors generated out of 91324 colors; ratio=0.002792
[Parsed_palettegen_2 @ 0x7f7f19001180] Dupped color: FF100C0A
frame= 37 fps=0.0 q=-0.0 Lsize= 453kB time=00:00:02.89 bitrate=1283.8kbits/s speed=7.33x
video:452kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.237091%
答案1
有一个漏洞在 GIF 编码器中,具有透明度。已于 2018 年 12 月 13 日修复。从获取较新的版本https://ffmpeg.zeranoe.com/builds/。