Banding/ Trailing while resizing a transparent GIF through FFMPEG

animated gifffmpeg

I am trying to resize a transparent gif using ffmpeg. link here

This is the command I am using to resize the 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

The problem is with the output. I am not sure the best way to describe it, but lets say the output GIF has huge "banding/ trailing" effect ( not desired ).

Sample output of the file is here Output here

I am not sure what is it that I am doing wrong and how can I fix this banding/ trailing effect.

I am using FFMPEG on macOS Mojave, ffmpeg version is 4.1.1. Below is the output of the command

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%

Best Answer

There was a bug in the GIF encoder, with transparency. Fixed on 13 Dec 2018. Get a newer build from https://ffmpeg.zeranoe.com/builds/.

Related Question