-
-
Save SlexAxton/4989674 to your computer and use it in GitHub Desktop.
gifify() { | |
if [[ -n "$1" ]]; then | |
if [[ $2 == '--good' ]]; then | |
ffmpeg -i $1 -r 10 -vcodec png out-static-%05d.png | |
time convert -verbose +dither -layers Optimize -resize 600x600\> out-static*.png GIF:- | gifsicle --colors 128 --delay=5 --loop --optimize=3 --multifile - > $1.gif | |
rm out-static*.png | |
else | |
ffmpeg -i $1 -s 600x400 -pix_fmt rgb24 -r 10 -f gif - | gifsicle --optimize=3 --delay=3 > $1.gif | |
fi | |
else | |
echo "proper usage: gifify <input_movie.mov>. You DO need to include extension." | |
fi | |
} |
brew install ffmpeg | |
brew tap phinze/homebrew-cask | |
brew install brew-cask | |
brew cask install x-quartz | |
open /usr/local/Cellar/x-quartz/2.7.4/XQuartz.pkg | |
# click through the stuff | |
brew install gifsicle | |
brew install imagemagick | |
# I had a weird problem with Convert/imagemagick where I had to do: | |
ln -s /usr/local/Cellar/libtool/2.4.2/lib/libltdl.7.dylib libltdl.7.dylib | |
# But hopefully you don't have to |
# Take screencast using Quicktime. Export as high quality as possible. | |
gifify screencap.mov | |
gifify screencap.mov --good |
Hmm....I'm getting the following:
convert: unable to load module `/usr/local/Cellar/imagemagick/6.8.9-1/lib/ImageMagick//modules-Q16/coders/png.la': file not found @ error/module.c/OpenModule/1282.
convert: no decode delegate for this image format `PNG' @ error/constitute.c/ReadImage/501.
convert: no images defined `GIF:-' @ error/convert.c/ConvertImageCommand/3187.
I checked and that file exists. I've reinstalled imagemagick and libpng umpteen times now. Not sure what else to try
Few issues getting stuff installed, Xquartz seems to have changed names and versions, but now getting an error gifify:7: command not found: ffmpeg
any thoughts? :(
@thatryan It sounds like ffmpeg
didn't install right.
- Try running the command
ffmpeg
, if that seems to fail, try installing againbrew install ffmpeg
. - If brew seems to be unhappy about that, try
brew doctor
afaik the install.sh can now just be
brew install ffmpeg gifsicle imagemagick
i don't believe xquartz is at all neccessary. (not sure why it was.)
Wow, I like @tonycoco's solution. Well done!
I've added the gifify
function to my bash-it fork: nwinkler/bash-it@e4bdad6
There's now an installable binary for that, lots of options, optimized! https://github.com/vvo/gifify
I get error on that command: brew install brew-cask
Error: Failed to download resource "brew-cask"
Failure while executing: git clone --depth 1 --branch v0.53.3 https://github.com/caskroom/homebrew-cask.git /Library/Caches/Homebrew/brew-cask--git
Anyone come across this error?
Incompatible pixel format 'rgb24' for codec 'gif', auto-selecting format 'rgb8'
If this helps anyone, my XQuartz location ended up being:
open /opt/homebrew-cask/Caskroom/xquartz/2.7.7/XQuartz.pkg
I assume that's due to the update to 2.7.7?
thatryan: Yes, I have that error (Yosemite). No idea what to do about it.
For those looking to install @vvo's gifify with prerequisites:
# install pornel/giflossy (fork of gifsicle)
wget https://github.com/pornel/giflossy/releases/download/lossy%2F1.82.1/gifsicle-1.82.1-lossy.zip
unzip gifsicle-1.82.1-lossy.zip -d gifsicle-1.82.1-lossy
cp gifsicle-1.82.1-lossy/mac/gifsicle /usr/local/bin/
# install ffmpeg
brew install ffmpeg --with-fontconfig --with-libass
# install imagemagick
brew install imagemagick --with-fontconfig
# install gifify
npm install -g gifify
Thanks @vvo, @pornel, @paulirish, @SlexAxton, and internets.
Please forgive my ignorance on the matter. I really want to use this as it seems the only method for high quality gifs.
I understand this is for MAC users only? I do have a mac pro. How can I use this script?
Thanks so much again!
@nexdrew could you please add this to the gifify repo as a PR? very valuable
@nexdrew could you please add this to the gifify repo as a PR? very valuable
@vvo and @nexdrew, here's a PR that does it in a curl one-liner: vvo/gifify#46. Feedback?
For anyone else interested, installing gifify locally works pretty well too.
$ npm install --save-dev gifify
… in your package.json
:
"scripts": {
"gifify": "gifify"
}
And can be run from command line like so:
$ npm run gifify -- -o test.gif test.mp4
… or js script within package.
Not sure if anyone cares about the output, but I like to make my bash functions quiet and less verbose... Here is my stab at it. The output of the command is much prettier. I also added the ability to scale it to a max width (via an argument to the gifify command)...