I'm trying to convert a .mov to a .gif and I'm not having success.

Here's the error:

ffmpeg -pix_fmt rgb24 -i yesbuddy.mov output.gif
ffmpeg version 0.11.1 Copyright (c) 2000-2012 the FFmpeg developers
  built on Jun 12 2012 17:47:34 with clang 2.1 (tags/Apple/clang-163.7.1)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/0.11.1 --enable-shared --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --enable-libfreetype --cc=/usr/bin/clang --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-librtmp --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libxvid --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libass --enable-libvo-aacenc --disable-ffplay
  libavutil      51. 54.100 / 51. 54.100
  libavcodec     54. 23.100 / 54. 23.100
  libavformat    54.  6.100 / 54.  6.100
  libavdevice    54.  0.100 / 54.  0.100
  libavfilter     2. 77.100 /  2. 77.100
  libswscale      2.  1.100 /  2.  1.100
  libswresample   0. 15.100 /  0. 15.100
  libpostproc    52.  0.100 / 52.  0.100
Option pixel_format not found.

If I leave out the -pix_fmt rgb24 part it complains. Thoughts on how to fix?

  • 2
    FYI, There is an excellent solution for high quality conversions given here. – ryanjdillon Mar 28 '14 at 13:37

The order of command line arguments matters. This command line should work but will generate a giant file:

ffmpeg -i yesbuddy.mov -pix_fmt rgb24 output.gif

Note that you probably want to reduce the frame rate and size when you convert, as well as specify a start time and duration. You probably do not want to convert the entire file at its original resolution and frame rate.

ffmpeg -ss 00:00:00.000 -i yesbuddy.mov -pix_fmt rgb24 -r 10 -s 320x240 -t 00:00:10.000 output.gif

The file size will still be huge. You may be able to use ImageMagick's GIF optimizer to reduce the size:

convert -layers Optimize output.gif output_optimized.gif
  • 3
    Awesome answer, thanks :) GIF is a crazy format... the original .mov was 250k, the converted .gif from ffmpeg was 8mb, and the convert-optimized version was an astounding 10k! Impressive! – TooTallNate Jan 22 '13 at 1:37
  • 17
    ffmpeg complains about the pixel format, and switches from rgb24 to pal8; should the command in the answer be updated? – user1071136 Mar 17 '14 at 20:39
  • 6
    Incompatible pixel format 'rgb24' for codec 'gif' – highmaintenance Jul 18 '14 at 10:15
  • 1
    @Andy auto-fixed to rgb8 in my version of ffmpeg. – James Campbell Sep 6 '17 at 22:46
  • how to do in Android? – Ajay Shrestha Nov 3 '17 at 23:18

After converting:

ffmpeg -i input.mp4 input.gif 

Try optimize frames:

convert input.gif -verbose -coalesce -layers OptimizeFrame input_optframe.gif

And use gifsicle to make final optimization:

gifsicle -O2 input_optframe.gif -o optimized.gif

Got 6.8mb GIF from 12.2mb video with almost the same quality!

  • 3
    Mind explaining how these steps work and what they are doing? – Raystafarian Nov 5 '14 at 19:31

I made a tool that bundles FFmpeg, ImageMagick and giflossy into a single easy to use command line program that you can install in one line: https://github.com/vvo/gifify

I recommend anyone willing to turn videos => GIF to use it instead of trying to spend a lot of time browsing 3 documentation websites to understand how to resize the GIF or change the start/end time.

  • 1
    And if you have Docker running on your machine, just do an alias like so: alias gifify='docker run -it --rm -v $(pwd):/data maxogden/gifify' then use it gifify screencast.mkv -o screencast.gif --resize 800:-1 – sabbour May 28 '18 at 6:38
ffmpeg -y -i input.mp4 -f image2pipe -vcodec ppm - | convert -delay 2 -loop 0 -layers Optimize - gif:- | gifsicle -d 3 -O3 -o optimized.gif

first use ffmpeg to convert mp4 file to images via pipe then use imagemagick to compress it to gif at last optimized it with gifsicle

I don't know why using gifscicle directly won't work.

or you can make the gif smaller by this

convert -dither none -matte -depth 8 -deconstruct -layers optimizePlus -colors 32 in.gif out.gif

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.