Skip to content

Instantly share code, notes, and snippets.

@Tardo
Last active February 21, 2019 23:47
Show Gist options
  • Save Tardo/b20c2f0c7908d2208a9e3075245ff6af to your computer and use it in GitHub Desktop.
Save Tardo/b20c2f0c7908d2208a9e3075245ff6af to your computer and use it in GitHub Desktop.
How convert screencast to gif

For users like me that can't use peek :(

System Dependencies

  • ffmpeg
  • convert
  • gifsicle
  • simplescreenrecorder (you can use the recorder that you want)

SimpleScreenRecorder Config

- Container: WebM
- Codec: VP8
- Bit Rate: 50000

Convert Screencast To Gif

If prefer can use these script: https://github.com/Tardo/video2gif/blob/master/video2gif.sh

Good Quality

$ ffmpeg -y -i <file_input.webm> -vf "fps=15,palettegen=stats_mode=diff" palette.png
$ ffmpeg -y -i <file_input.webm> -i palette.png -filter_complex "fps=15,paletteuse=dither=bayer:bayer_scale=5:diff_mode=rectangle" <my_super_cool.gif>

Good Quality & Size

$ ffmpeg -y -i <file_input.webm> -vf "fps=5,palettegen=stats_mode=diff" palette.png
$ ffmpeg -y -i <file_input.webm> -i palette.png -filter_complex "fps=5,paletteuse=dither=bayer:bayer_scale=5:diff_mode=rectangle" <my_super_cool.gif>
$ convert <my_super_cool.gif> -fuzz 3% -layers Optimize <my_super_cool.gif>
$ gifsicle -O3 <my_super_cool.gif> -o <my_super_cool.gif>

Bad Quality & Good Size

It will depend on the type of video, if it has many colors or change a lot from frame to frame.

$ ffmpeg -y -i <file_input.webm> -vf "fps=5,palettegen=stats_mode=diff" palette.png
$ ffmpeg -y -i <file_input.webm> -i palette.png -filter_complex "fps=5,paletteuse=dither=bayer:bayer_scale=5:diff_mode=rectangle" <my_super_cool.gif>
$ convert <my_super_cool.gif> -fuzz 5% -layers Optimize <my_super_cool.gif>
$ gifsicle -O3 <my_super_cool.gif> --colors 128 -o <my_super_cool.gif>

Poor Quality & Good Size

It will depend on the type of video, if it has many colors or change a lot from frame to frame.

$ ffmpeg -y -i <file_input.webm> -vf "fps=5,palettegen=stats_mode=diff" palette.png
$ ffmpeg -y -i <file_input.webm> -i palette.png -filter_complex "fps=5,paletteuse=dither=bayer:bayer_scale=5:diff_mode=rectangle" <my_super_cool.gif>
$ convert <my_super_cool.gif> -fuzz 10% -layers Optimize <my_super_cool.gif>
$ gifsicle -O3 <my_super_cool.gif> --colors 128 -o <my_super_cool.gif>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment