Creating Screencasts under Linux

You all probably know what a screencast is. In my opinion, screencasts can greatly complement HOWTO documents and I strongly believe that they will be even more popular in the upcoming years. Although it would be more useful if this post dealt with how to create a screencast using free open-source software, I feel it is more important to describe the situation a user has to face while trying to create a screencast using two of the most actively developed FOSS tools for this purpose, recordmydesktop and istanbul.

Using recordmydesktop or istanbul to create a screencast can only result in one thing: an ogv file; that is an ogg container, which contains a theora encoded video stream and a vorbis encoded audio stream. Seems like nobody has ever cared if that video file is editable using any video editing tool! I have tried kino, avidemux, cinelerra, but not one of them could open the video. Re-encoding the video to a format, for example xvid, that could be recognized by any of those programs would be mandatory if you’d want to cut out or insert a scene to the screencast. The authors of recordmydesktop or istanbul should have given us the freedom to choose the format we would like the video and audio to be encoded into. Forcing us to export the video to a single format, which btw is not recognized by any of the most popular FOSS video editing tools, is completely useless. It does not make us feel more free while using free software.

Someone could argue that the clip is quite editable to a certain degree using scripts (found via these screencasting instructions) like the following:

# 2008-06-20
# Simple shellscript to mix theora video+audio using gstreamer pipeline
# Takes 3 arguments wavfile theoravideo output-theora-video
if [ $# -lt 3 ] ; then
  echo "Usage: $0 wavfile theora-video output-video"
  echo "Ex: $0 english-audio.wav desktop-recording.ogg english-desktop-video.ogg"
   gst-launch-0.10 \
     filesrc location=$2 \! decodebin name="video" \
     filesrc location=$1 \! decodebin name="audio" \
     audio. \! queue \! audioconvert \! vorbisenc \! queue \! mux. \
     video. \! queue \! ffmpegcolorspace \! theoraenc quality=32 \! oggmux name=mux \! filesink location="$3"

Then again this is not the kind of “editability” I was referring to.

Anyway, if you have to use one of these tools, but need to make a few adjustments to the final clip, here is how to re-encode the ogv file to xvid or mpeg4 formats using mencoder. Note that in order to preserve as much quality as possible I use two-pass encoding.

Using mencoder’s xvid codec:

mencoder out.ogv -ovc xvid -xvidencopts bitrate=1000:pass=1 -o xvid.avi
mencoder out.ogv -ovc xvid -xvidencopts bitrate=1000:pass=2 -o xvid.avi

Using mencoder’s mpeg4 codec:

mencoder out.ogv -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1000:turbo:vpass=1 -o mpeg4.avi
mencoder out.ogv -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1000:vpass=2 -o mpeg4.avi

Choose whichever you think that better preserves quality.

Regarding bitrate, I’ve used 1000kbps as I think it creates good results while not exceeding the filesize of the original video.

In order to get some information about the ogv file, you can use ogginfo:

[gnot@galeon bin]$ ogginfo out.ogv 
Processing file "out.ogv"...

New logical stream (#1, serial: 1bd82e14): type unknown
New logical stream (#2, serial: 16113fc8): type theora
Theora headers parsed for stream 2, information follows...
Version: 3.2.0
Vendor: Xiph.Org libTheora I 20060526 3 2 0
Width: 592
Height: 368
Total image: 592 by 368, crop offset (0, 0)
Framerate 1000/100 (10.00 fps)
Pixel aspect ratio 1:1 (1:1.000000)
Frame aspect 4:3
Colourspace unspecified
Pixel format 4:2:0
Target bitrate: 45 kbps
Nominal quality setting (0-63): 63
User comments section follows...
Logical stream 1 ended
Theora stream 2:
        Total data length: 7012059 bytes
        Playback length: 4m:27.799s
        Average bitrate: 209.471516 kb/s
Logical stream 2 ended

Your comments are welcome.

Creating Screencasts under Linux by George Notaras is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
Copyright © 2009 - Some Rights Reserved

George Notaras avatar

About George Notaras

George Notaras is the editor of the G-Loaded Journal, a technical blog about Free and Open-Source Software. George, among other things, is an enthusiast self-taught GNU/Linux system administrator. He has created this web site to share the IT knowledge and experience he has gained over the years with other people. George primarily uses CentOS and Fedora. He has also developed some open-source software projects in his spare time.

5 responses on “Creating Screencasts under Linux

  1. Matthew Permalink →

    Reason why the software does not give you the freedom to choose is because it is not legal to distribute patent licensed encoding codecs, in parts of the world that recognize software patents.

    Why is it that these free-software programs kino, avidemux, and cinelerra have trouble using Ogg Theora video?

  2. George Notaras Post authorPermalink →

    I think you are very wrong. I did not ask for the distribution of the codec inside the recordmydesktop or istanbul distribution package. All I asked for was to be given the freedom to choose the codec myself. There is no patent or copyright or license issues involved in the provision of the ‘freedom to choose’. Apparently both the authors of the aforementioned programs have not realized how much their decision limits the use of their software. As a last resort, the user could be offered the option to define an alternative encoding mechanism, so it would be possible to use mencoder or ffmpeg.

    As for kino, avidemux, and cinelerra, they just do not support the format. This is wrong too, since theora and vorbis are patent free. However, I am not aware of any technical issues regarding the support for the format.

  3. Chris Mylonas Permalink →

    I’m really glad I came across your article. I haven’t followed through with using the screencast software yet, but I will. You seem to know a few handy tricks in the A/V area.

    I understand that shipping another codec/choice would be the better option from a users perspective, but during this effort, it’s not.

    The author gave you the freedom to modify it for yourself. Not every software developer is a good software architect, and merely knowing how to program does not make you a good programmer. This, arguably comes with time.

    Unless you’ve followed it up with the authors, I’d ask you to do so before posting what idiots they appear to be for not giving you everything you wanted in the current release.


  4. Jay Permalink →

    Though I agree it would be nice to have options, at the same time to the FREEDOM of the code writer, he doesn’t have the need to therefore didn’t write it in.

    As the old saying goes when people are doing things free of charge… if you like what someone did and need it to do something else… ASK THEM NICELY OR DO IT YOURSELF.

    Open source doesn’t mean bending to everyone’s needs just because they feel they have “the right” to the options (or whatever)… it means “Hey guys, I wrote this code, you can have it and work with it if you would like and I appreciate RESPECTFUL feedback”.

    Change your angle of approach and perhaps one of 3 things will happen:
    1) They may have a module / solution for you already
    2) They may write a solution for you purely out of they kind hearts
    3) Someone else picks it up and does it.

    Either way, it should never be expected of OSS individuals to tend to every babies needs… or they would never get what they want in their own lives done.

  5. George Notaras Post authorPermalink →

    @Jay: Thanks for your feedback.

    The fact that a piece of software is released as free software does not necessarily mean that it deserves global acceptance and respect. I greatly respect and appreciate the authors’ time and effort and time though, but I think the end result lacks basic functionality.

    Since I wrote the above post, I haven’t tried using any of those two identical utilities ever again. These programs might be available to us free of charge, but their use is not cost free. It costs in personal time and effort, which I cannot afford.

    Note that the above post was written after trying to create and edit a screencast using open source tools for two days! It’s not only those two tools that lack basic features. It’s the whole tool chain we have to use in order to properly edit a video that is extremely buggy.