How to make a Screen cast in Linux

There are many ways to create ScreenCast in Linux. Basically all of your options break down into two categories console tools and gui tools.
I have played around with a lot of different methods and think I have found a solution that works really well.

If you have a really powerful system you can do everything via ffmpeg. Make sure you compile ffmpeg with the --enable-x11grab flag.
Once you have ffmpeg compiled properly you can capture, scale and encode your screencast using something like.

ffmpeg -f oss -i /dev/audio -f x11grab -i :0.0 -s 1680x1050 -r ntsc -target ntsc-dvd test01.mpg

if that doesn't work, then try it without the audio

ffmpeg -f x11grab -i :0.0 -s 1680x1050 -r ntsc  -target ntsc-dvd test01.mpg

-f (input format) -i (input) -s (input resolution - yes, you can crop and clip) -r(input format) -target (target) filename

You can be more specific and set the various output parameters too.

ffmpeg -f oss -i /dev/audio -f x11grab -s 1024x768 -r 30 -i :0.0 -vcodec flv -s 640x480 -aspect 16:9 -qscale 10 -acodec libmp3lame -ab 32k -ar 22050 test01.flv

Read the ffmpeg manual "man ffmpeg" in a console or man:ffmpeg in konqueror.
Play around with it and see if your machine is powerful enough to handle all this in real time. If it is, then this is probably your best option.


For slower computers, I have found that recordmydesktop works the best. There is an easy to use gui for recordmydesktop called gtk-recordmydesktop. There is also a kde gui krecordmydesktop, but the gtk gui has more options. Recordmy desktop only saves to .ogg, so more than likely you will want to convert that to mp4 or some other format. FFMPEG to the rescue again.

Something like:]

ffmpeg -i out.ogg.1 -qscale 5 -ab 64 -ac 1 -r 10 -s 400x300 -pass 1 test1.flv 

Should do nicely!