The making of the Perl screencasts

David Golden asked me how I am preparing the screencasts. I guess I should prepare a screencast about that but I think my methods are so lame that I am not sure it is worth learning from them. And I don't even use Perl.

The simple version is that I run Ubuntu 10.10 and on top of that I run Windows XP in a VirtualBox. On the Linux I use a GUI wrapper of RecordMyDesktop called, Desktop Recorder. I resize the terminal window or the whole VirtualBox to the size that will look good on YouTube. (Yes, that's the part that I am not yet sure which size should that be but see aspect ratio below). The Desktop Recorder allows me to select a window that I'd like to record. Then I just record my stuff, sometime 5-10 times till I manage to get it almost acceptable. This generates an ogg file which I can convert to avi using a GUI wrapper of FFmpeg called WinFF.

I used to upload that file to YouTube.

In the recent screencasts I also added another part in the mix: I launch Cheese Webcam Booth and using my webcam I record myself while I am doing the screencast. That too generates an ogg file that I turn into an avi file using WinFF.

Then I launch KDEnlive where I do the editing. Synchronize the two videos. Add some effects and transitions my son taught me. Add a title clip and an end clip and render it to YouTube. (See rendering below). Then upload it.

Now that I gained some experience it takes about 3-4 hours per screencast.

I still have a lot to learn on how to improve the recording and the editing as well as further getting used to it. While I don't have a lot of problem giving a lightning talk in front of 300 people at a YAPC, I still get really nervous while trying to record myself. Even though this isn't live. It's a bit better now but I still need to concentrate a lot.

Aspect Ratio

(an update to the blog)

Aspect ratio refers to the ratio between the width and the height of the picture. The standard viewer of YouTube uses the 16:9 = 1.77 aspect ratio. I installed an application called Screen Ruler and even measured it.

So if I want to have my video fit the screen well (so there won't be wasted black stripes on the top, on the bottom or on the sides then I have to take the screencast of an area that resembles that size. Indeed the screencasts where my screen looks good were taken on a window that was 830x460 pixels (830:460 = 1.8) (e.g. Padre on Strawberry Perl v5 released and Using the built-in debugger of Perl as REPL) while the most recent one (Fetching data from YouTube using Perl was taken on a window size of 1070x520 pixels (1070 : 520 = 20.5))

The video I take of myself is I think rectangular. I wonder if the aspect ratio is a feature of the camera or the software I am using. In any case as long as it is not the same aspect ratio as the other video I think I have two choices. Either crop it to the same as aspect ratio, removing some parts of the picture or to add the surrounding black bars called letter-boxing or http://en.wikipedia.org/wiki/Pillarbox depending on the orientation.

Still the size of the windows will matter and the actual size of the pixels. I have to learn that.

Rendering

(an update to the blog)

I used to render my videos to "Websites / YouTube 640x480" but the quality did not come out well. I tried "Websites / YouTube 1280 x 720" but that made the sound horrible. I have no idea what is the issue there though I reported it. I did not even check if the video quality is better in this version.

I tried to render to "Files / H.264 1000 k" that I think created very good quality even after uploading to YouTube but the sound was broken there. (Maybe if I record the sound only once then this problem will be irrelevant). I also tried "Files / MPEG-4 1000 k". I think the video quality here is already acceptable and the sound is also OK. So I re-rendered the Building a blog engine using Perl Dancer video with this.

Reading material

Video on the Web

Screencast or workshop?

Anyway, one day I'll try to show this in a screencast maybe and/or as a small workshop at a YAPC. In the meantime, go check out my screencasts and subscribe to my channel!