Hacker News new | comments | show | ask | jobs | submit login
Making GIFs From Video Files With Python (zulko.github.io)
285 points by killahpriest on Jan 25, 2014 | hide | past | web | favorite | 41 comments



Please use silent HTML5 videos instead of animated GIFs wherever possible. They are much more bandwidth- and CPU-efficient. This site allows you to automatically upload/convert animated GIFs into that format: http://gfycat.com/

The links allow you to see the animated GIFs as well, if viewer's device doesn't support HTML5.


The problem, for me, is that HTML5 video is a technical solution with no social advantage. There are so many places on the web where images are allowed that videos will never be allowed -- for good reason. Forums, comment threads, etc.

What we need is an image container format that allows for a silent (and only silent) video stream to be embedded. A better GIF. Something that site maintainers would feel entirely comfortable in allowing.


A new format would be overkill. Websites can just set the "muted" attribute on video elements. If you also set "loop" & "autoplay" and hide the controls, you've got a video that acts just like a GIF.


One problem is iOS devices won't play any videos with hidden controls.



This! (Although if the sound thing is such a problem then perhaps the muted attribute should be set to true by the hosting site?)

Here's an idea: <img src="video.mp4">.

Updated semantics should be the same as the video tag.


Why don't the powers that be make a new image animated image format that is bandwidth conservative? I don't get why Google/Apple/Microsoft/Adobe haven't jumped on this. Or maybe I do, they don't use animated GIFs. Fuck. If only Reddit/imgur/Internet forums had any lobbying power.


Try https://mediacru.sh instead of gfycat. It has a lot more features, and it's open source [1]. It's been around the HN block a few times [2][3].

Disclaimer: I made it with a friend and I'm baised.

[1] https://github.com/MediaCrush/MediaCrush

[2] https://news.ycombinator.com/item?id=6773039

[3] https://news.ycombinator.com/item?id=6189397


Im baised... I really like that expression and will start using it :D


The same scripts will output videos for HTML5 if you replace the `to_gif` method by `to_videofile`:

    clip.to_videofile('animation.mp4')
    clip.to_videofile('animation.webm', codec='libvpx')
    clip.to_videofile('animation.ogv',codec='libtheora')


Can I make video/gif from multiple photos?


You can do that with ffmpeg or ImageMagick. Something like

    ffmpeg -i *.png output.gif
You have options like delay, loop, etc.


Yep, that's how I do my gif conversions because it allows for much finer control, and often returns better results. I built an entire app around abstracting this technique: http://gifmachine.xwl.me/


Yes, I guess I could figure out such options but let me explain what problem I have. I take multiple photos (e.g. my camera can take 10 photos per second) and want to make video from that. Gif is poor option as photos are taken with hand and are shaky a little bit. Gif will get big in size because of that alone. Video (e.g. webm) is very good alternative for that. Your project (?) offers option to add text (and other nice little details) and that makes it killer alternative.


I haven't used this, but it looks like this might be what you're looking for [1]. Construct with a folder name and framerate and then use the to_videofile method.

https://github.com/Zulko/moviepy/blob/master/moviepy/video/i...


One nice thing about GIF is that the format is not patent-encumbered. Same goes for MPEG-1.


WebM seems to avoid all the problems related to patents (http://en.wikipedia.org/wiki/WebM).


Nokia is still trolling VP8/VP9.


There's a drawback. Can we save these? Can we link directly to them?


Yes, if you right click (at least in Firefox) there is an option to download the WebM file. And you can get a direct link, although that doesn't really make sense, since if you're sending it to somebody, they probably want the option of watching the WebM version or the GIF version.



Nice! Also check out: "Stupid programmer tricks and Star Wars .gif": http://rarlindseysmash.com/posts/stupid-programmer-tricks-an...

Also Python, but uses VideoLan (VLC) to some extent to create really nifty Star Wars gifs.


(on 'jessie'):

apt-cache search 'movie.<asterisk>python|python.<asterisk>movie'

... <squatmo-germane> ...

well, nutz.

(and how the hell do you type a real asterisk in this comment forum? tried escapes... tried html entities...)


For code, just put a couple spaces before the line:

  apt-cache search 'movie.*python|python.*movie'
In general, you can also stick a space after them * * *.


thank you. i would've never thought of that. * *


This is awesome and much easier than writing FFMPEG commands (which is what I do now). An enhancement could be adding voice to text.


Anyone done a benchmark of this vs AVISynth? I have software I wrote in AVISynth for doing 2d to 3d Stereoscopic upconversion based on motion and parallax. I have often wished I had it in something more "real" like Python.


Have you tried VaporSynth? It's kind of a spiritual successor to AviSynth in the form of a Python module. Can even load AviSynth plugins.


This is nifty! Though it's tempting to draft a GUI for it.


This is much nicer than my normal method of getting the frames with mplayer -vo png and then using ImageMagick to assemble the frames into an animated GIF.


I just watched the whole 'Pigs in a polka' video and it is so good! The API is also very cool :)


@Schneems has a really good tutorial on this using ffmpeg. http://www.schneems.com/post/41104255619/use-gifs-in-your-pu...


mplayer can do this as well:

    mplayer videofile -vo gif89a:fps=15:output=video.gif
You can use mplayer's other options to set the start time, duration, and cropping.


Thank you! I've never met MoviePy and it looks really good. I'm waiting for libopenshot to be released, what do you think about it?


Isn't this overkill? You can get the exact same result with FFMPEG and a single shell command.

Seems like a solution in search of a problem.


Can you easily integrate django with a shell command? Or with the python imgur image hosting? Easy online creation of gifs seems kind of useful.


I use http://www.gifrocket.com/ for Mac.


Nice, kept me occupied for an hour :) also I must say author did a great job with module and documentation.


Very well made tutorial.


Very nice API.


this is awesome




Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact

Search: