Mkcast – GIF terminal screencasts with key presses overlaid
github.com
github.com
gifify screen.mov -o screen.gif --resize 800:-1
example GIF:http://www.compciv.org/files/images/cli/echo-redirect.gif
It's better than embedding video clips for such short snippets, but being able to show keystrokes would be even better (Quicktime does record mouse button presses)
Still, movies win out in (1) smaller file size and (2) control for easy pausing, reversing, and skipping forward.
I hate it when I can't pause, go back, or go forward on instructional examples. Often I want to skip ahead to the relevant part, or pause so I can examine and play around more.
I want to be able to pause it easily so I can type on the computer keyboard I'm working on. I want to be able to scrub the timeline back and forth to easily replay something I might have missed instead of having to watch the whole thing over again. All too often a part might go by too fast, and with the GIF you need to wait for the whole thing to cycle again in order to catch that spot in the instruction that went too quickly. And then that spot goes by too quickly again, and you just want to pause the bloody thing, but you can't because it's a GIF. And so someone tacks on a bunch of extra JavaScript to create a player for the GIF in order to add that control. At this point in the story, file size and simplicity have both been thrown out the window. But, I digress...
The GIFs only serve a very limited purpose for VERY short screencasts so that it isn't an annoyance replay the whole thing again and again to catch something that was missed, etc.
Even with that example as small as it is, https://gfycat.com/AcidicTangibleChupacabra reduced it:
GIF: 408,744 bytes.
WebM: 344,978 bytes.
MP4: 151,047 bytes.
That's a 2.7 to 1 compression ratio from the GIF to the MP4. And if you were specifically targeting "terminal recording" as a targeted scenario, you might be able to tailor the video compression settings for better quality and frame usage than GyfCat does.I'd rather get the 147.5 kibibyte MP4 over the 399.2 kibibyte GIF on my mobile. Especially when I'm looking up something on my phone in concrete and metal building with poor signal and non-accessible Wi-Fi.
Using the HTML5 video tag, it serves WebM and MP4, so everybody should be happy.
There seems to be an abuse of GIFs when most people's browsers support MP4 or WebM just fine nowadays. If your browser doesn't support that, then you probably want to stick to simple text instructions for the terminal instructional example anyway.
(This is just a copy/paste of my comment here: https://news.ycombinator.com/item?id=8982525, sorry if that's frowned upon here or such but I couldn't think of a better way to respond to both of you.)
https://i.imgur.com/O7E2WDq.png
Red text in particular will suffer a lot from compression algorithms designed for video.
I thought your example looked very blurry at first glance but maybe it's just because I'm used to ClearType-style font rendering.
https://github.com/josch/scriptreplayjs
https://blog.mister-muffin.de/2011/07/05/scriptreplay-in-javascript/
And another project that uses a similar approach (but as far as I can tell, doesn't use plain script files): https://asciinema.org/
One benefit with scriptreplayjs is that you could just download the script-file and play it pack with script/scriptreplay (the former under BSD (and Linux?), the latter (only) under Linux, if I read the man-pages right).And the fact that the script is (mostly) text -- so it should be easy to make it copy-pasteable...
I suppose it should be possible to patch either project to overlay key presses...
https://www.freebsd.org/cgi/man.cgi?query=script(1)&sektion= http://man7.org/linux/man-pages/man1/scriptreplay.1.html
https://packages.debian.org/wheezy/bsdutils
[edit: Might be cool to hack this tool to work with regular script logs -- so it could generate gifs, or other tools could be used for js "playback"? ]
From the github page:
specifically, I wrote this with the forthcoming Vim Stack Exchange site in mind
From the script docu: Certain interactive commands, such as vi(1), create garbage in the typescript file.
script works best with commands that do not manipulate the screen, the results are meant
to emulate a hardcopy terminal.http://0xcc.net/ttyrec/index.html.en
There appear to be many players, eg:
https://github.com/oliy/ttyplay
See also:
https://github.com/jedi4ever/ttyrec.js
Apparently vim-sessions should work:
https://github.com/jedi4ever/ttyrec.js/issues/1
There's a site devoted to tutorials based off of ttyrec:
Or, for just vim, Replay.vim: http://www.vim.org/scripts/script.php?script_id=3216
Other than that, I'm inclined to have a look at op's code to see if one might break out the gif-encoding to a sepearate bit -- and "encode" for js/html playback (as well, or in place of) video/gif.
Please, hack on the code, this is something that should exist.
Oh, and http://showterm.io/ and https://asciinema.org/
http://linuxpoison.blogspot.co.at/2008/11/desktop-recording-...
Still, interesting.
Smartphone users might not have lots of bandwidth and GIFs are incredibly inefficient compared to H.264 and WebM videos. Why waste bandwidth when you don't have to?
For example, the following GIF of a CD in a microwave is 8 MB, but when converted to a WebM by Gfycat is just 369 KB.
Still, that's definitely a file-size improvement over the GIF.
GrimOpenDutchsmoushond.GIF: 8,714,192 bytes.
GrimOpenDutchsmoushond.MP4: 1,137,305 bytes.
GrimOpenDutchsmoushond.WebM: 378,363 bytes.Also, think about viewing this on mobile networks, etc.
Edit: Oh, there are some actual numbers elsewhere in these comments.
https://github.com/przemoc/kaos/
but I just remembered that I still haven't fixed a bug I noticed on my computer at work, where I had Gnome back then. Nowadays I have awesome there too (just like on my laptop), so I'll possibly won't reproduce it, but notes I left should be enough to do the fix one day. ;)
http://www.sublimetext.com/~jps/animated_gifs_the_hard_way.h...