I got to test out a good number of screencasting applications and I found a good one, and as usual the easiest was the best. I started with recordMyDesktop.
recordMyDesktop is a basic program that works good. The GTK version has a simple UI that sets a border around the area to be recorded. I has sound recording too.
A minor thing but of note is that the window detection area is off when selecting a windows, but the reason I didn’t use recordMyDesktop was because I found the quality wasn’t that good. It could be because it uses
.ogv format, or perhaps it had something to do with my system.
This is and example I did with recordMyDesktop and though it’s enlarged (OpenShot doesn’t have the ability to use the original size) the quality I wanted to be better.
I tried Istanbul and a couple others all with about the same recording results. Istanbul hasn’t been developed in several years and though I got excited about xvidcap it hasn’t been developed in years either. xvidcap grabs screenshots and then concatenates them into a video. I got excited because xvidcap’s preview uses Imagemagick’s
animate tool to preview the video and it was real nice. Unfortunately very little works in xvidcap anymore but taking the screenshots. To put them together I used:
fmpeg -i out%04d.xwd -r 15 -vcodec huffyuv test.avi
unfortunately the quality was no better than that of the others.
The great command line tool to encode and decode video
ffmpeg can also do screencasts and I read a lot of how people liked it (and I do too). To use it it’s real basic:
ffmpeg -f x11grab -s wxga -i :0.0 -sameq screencast.mpg
The quality isn’t quite what I want it to be, but I’ve seen other people have nice looking screencasts so I think it must be either my video card or my video driver.
This line can be amended some for better quality, performance, and add sound recording. Using the raw, lossless codecs for video and audio improves processor usage for better FPS recording:
ffmpeg -f x11grab -s wxga -i :0.0 -vcodec huffyuv -sameq -acodec pcm_s16le -f alsa -i pulse -ac 2 screencast.avi
-iare for size and input.
-swill give the dimensions and
-iwill define the co-ordinates.
wxgais a definition of a video resolution standard (available ones are listed in
-rcan be added to define the frame rate. Default is 25 and is good. Only reason really to change it is if frames are dropped during recording (marked with red).
-follow_mouse 100can be added to follow mouse movements.
100is the border in pixels that must be reached before the area is moved.
ffcast and FFmpeg
ffcast is a program that grabs and passes X.org server dimensions and co-rodinates to other programs. It has built-in support to pass these parameters for some programs including
ffmpeg. So the command will now look like this:
ffcast -s ffmpeg -- -vcodec huffyuv -sameq -acodec pcm_s16le -f alsa -i pulse -ac 2 screencast.avi
-s option will prompt for the screen area and then pass the dimensions and co-orodinates to
Now to make this easy, I put this in a bash script, it runs as such:
screencast <a|f|m|w> - create screencasts (a)rea (f)ull-screen (m)ouse (w)indow
Here’s the bash script: