I've been learning about screen recording in Linux so I can make a demo/tutorial for [[Hooke]]. There seem to be a number of options ([Xvidcap][], [recordMyDesktop][], etc.), but my favorite approach is to use [ffmpeg][] directly from the command line (If you're only interested in recording terminal sessions, look at [[script]]). You may recall ffmpeg from my earlier post about [[video encoding|video]]. For those to lazy to read the man page, here are some highlights: Record audio: $ ffmpeg -f alsa -i hw:0 out.wav Record video: $ ffmpeg -f x11grab -r 30 -s 1280x1024 -i :0.0 out.mpg Record audio and video: $ ffmpeg -f alsa -i hw:0 -f x11grab -r 30 -s svga -i :0.0 out.mpg The trouble will be getting your audio/video captured, encoded, and stored to disk fast enough to keep up with your desired frame rate. Smaller sizes, slower frame rates, simpler encodings, and writing to ramdisks will all help with that. You can create a ramdisk with something like $ mkdir /tmp/ramdisk $ sudo mount -t tmpfs none /tmp/ramdisk -o size=256m It's also possible that passing the `-sameq` option to ffmpeg will help, but I'm not entirely convinced. Anything recorded or encoded by ffmpeg should be playable in mplayer (as far as I know), or you can transcode it into a format of your choice (see my [[video encoding|video]] post for hints. Note to Gentoo users: you'll need to compile ffmpeg with the `X` flag enabled to get the x11grab video input device. If you can't get ffmpeg to work, an example `recordmydesktop` command looks something like: recordmydesktop --height 600 --width 880 --channels 1 --overwrite -o ramdisk/setup.ogv Some benefits recordmydesktop: * it uses `libxdamage` to only monitor regions of your window that have changed (I'm not sure how ffmpeg's x11grab works). * it doesn't encode the video until after encoding finishes (although you can encode on the fly if you like). [Xvidcap]: http://xvidcap.sourceforge.net/ [recordMyDesktop]: http://recordmydesktop.sourceforge.net/ [ffmpeg]: http://www.ffmpeg.org/ [[!tag tags/linux]]