![]() ![]() ![]() You may also try to generate new palette for each frame, so you can skip the first pass, and use the new option in the paletteuse filter. You might need to fiddle with the params and the dithering methods to achieve best result. You can adjust the compression level with a simple slider to get the best result for your use case. It can reduce the animated GIF file size by 3050 at the cost of some dithering/noise. ![]() Then, use this color template to generate the actual gif file: ffmpeg -i -i palette.png -filter_complex "fps=10 scale=500:-1:flags=lanczos paletteuse=dither=sierra2_4a" -t 10 GIF compressor optimizes GIFs using Gifsicle and Lossy GIF encoder, which implements lossy LZW compression. On the other side, you can achieve better results with ffmpeg only.įirst, I'd generate a palette of the input video: ffmpeg -i -filter_complex "fps=10 scale=500:-1:flags=lanczos,palettegen=stats_mode=full" -t 10 palette.png (Also, there's no such things like "huge" pixels, they are the atomic elements of raster images.) I tried to optimize the GIF file using Gifsicle with heavy lossy compression ( gifsicle -lossy200 -optimize3 ), the file size is still 3.1 MB large. For best results, I'd recommend floyd_steinberg or sierra2_4a, and maybe bayer with scale set to 3. Input file: 5.00 MB I know the GIF is long (40 seconds), but I’ve already reduced the frame rate to mere 8fps. I suppose you have no imageMagick installed on your environment, because "convert" is one of IM's tools.Īs for the video artifacts, it is caused by the default dithering method in FFmpeg. Shell_exec("/usr/bin/ffmpeg -i video.mkv -r 20 -f image2pipe -vcodec ppm - | convert -delay 5 - output.gif") ![]()
0 Comments
Leave a Reply. |
Details
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |