| ./dev |
|
Original theme by orderedlist (CC-BY-SA)
Where applicable, all content is licensed under a CC-BY-SA.
|
I've found kazam to work very well.
$ sudo apt-get install kazam
$ kazamFile->Create->Screenshot
$ import -window root screenshot.png$ convert -delay 1 -layers optimize inp*.png anim.gif$ winid=`xwininfo | grep -o 'Window id: [^ ]* ' | cut -f3 -d' '` ; echo $winidClick on the window in question and make sure the portion of the window you want to record is exposed.
$ for x in {1..10}
do
import -window $winid out$x.png
sleep 0.1
doneOnce the out{1..10}.png files are created, coalesce them into an animated Gif:
$ convert -delay 1 -layers optimize out*.png anim.gifUsing ImageMagick is sometimes slow. Using kazam (and only capturing a window) will create an mp4 file that can be exploded:
$ ffmpeg -i inp.mp4 pic%03d.jpg
$ for x in `ls pic*.jpg`
do
mogrify -crop 1000x700+0+70 $x
done
$ convert -layers optimize pic*.jpg out.gifWhere mogrify alters the image file in place and -crop crops the top pixels (to get rid of the tabs and URL if it's a web browser, say).
Sometimes ImageMagick has a lot of issues when trying to create an animated Gif, especially if there are many frames. Instead, you can use ffmpeg directly (see SO):
$ palette="/tmp/palette.png"
$ filters="fps=15,scale=320:-1:flags=lanczos"
$ ffmpeg -i input.mp4 -vf "$filters,palettegen" -y $palette
$ ffmpeg -i input.mp4 -i $palette -lavfi "$filters [x]; [x][1:v] paletteuse" -y output.gifffmpeg can apparently also directly create (large) animated Gifs:
$ ffmpeg -i input.mp4 large_output.gifTo reduce the large_output.gif, gifsicle can be used:
$ gifsicle -O1 --loop large_output.gif > slim_output.gifthough gifsicle looks to have some problems compressing well.
To take a sub range of pictures from gifsicle, you can do something like:
$ gifsicle -U inp.gif '#50-73' > out50-73.gifWhere the # specifies the frame range and the -U (unoptimize) option is needed to get rid of artifacts that appear to happen when selecting from a mid range of frames.
recommended workflow
kazam.mp4 to animated Gif with ffmpeg