There have been a number of problems, and some interesting workarounds in order for Lindsey and I to create a screencast. Our requirements were as follows: One of us needs to run through using a number of programs (web browser, shell running our scripts, and our graphical api tool). These actions are going to be recorded by screencast software, while we talked over top. Both people need to be able to view the contents of the screen during the recording.
The recording has to be done on Lindsey’s Linux box, as I cannot get his graphical tool to run on my computer (It is worth mentioning that the tool works fine on Lindsey’s computer, and is not one of our deliverables). One of the required components gtk would not install properly on my system. I need to install it through a program called macports that deals with linux->mac ports. The program had at least 100 dependencies that all needed to be fetched, extracted, verified and installed. On at least 10 occasions, one of those dependencies failed and had to be manually installed. Once the program finally ‘installed’, it still didn’t seam to work. So, I found another installer for a comparable gtk tool that could be installed via a shell script. This also didn’t yield any results.
Next in need of replacing was our original screencast software, a web-based program called Screenr (which is mainly designed for screencasts to share on Twitter). Unfortunately, the program does not run on Lindsey’s Linux machine. At the same time, Lindsey was having some issues with setting up a VNC Server to share his desktop.
We replaced VNC with Skype, as it can do screen-sharing (it works quite well), and Screenr with a linux utility called gtk-recordmydesktop. This introduced the next problem, getting recordmydesktop to record both Lindsey’s mic, and my audio. After many attempts involving configuring settings, all manner of hacked together cables, and a program called JACK (which probably could solve the problem, but is a complex program) we decided the only two real options were cranking up Lindsey’s speakers and recording my audio from the speakers (much like how NASA’s moon-landing video was shot by pointing a camera at a television), or to have my audio overdubbed. dubbing at this point seemed like the best option.
We wanted to be able to shoot the video in segments, and combine + crop the segments together. Youtube could handle combining and cropping, but not the dubbing (it seems), so this meant we needed to use another program for overdubbing. I own iMovie, so it seemed like the best bet. The only issue is that iMovie is really picky about the files types it can load.
recordmydesktop creates ogv files. Lindsey found a tool to convert the files into AVIs (or more correctly ISOs containing AVIs. iMovie kind of pretends it can load AVIs, but it is lying. Luckily, in the meantime, I had found a program called Handbrake, which can convert AVIs into MP4s. These MP4s can then be loaded into iMovie to be spliced together.
The overall system works as follows:
- Lindsey runs the various programs to be shown in the screencast
- The programs are recorded by gtk-recordmydesktop and saved as OGVs
- A stream of Lindsey’s actions are sent to me via Skype’s screen-sharing tool.
- my audio is recorded (probably using quicktime, maybe Garageband)
- Lindsey converts the OGV to an AVI in an ISO using devede
- Lindsey creates a tarball of all the AVIs using gunzip
- The tarball is sent to me using Yousendit, Skype or Dropbox
- I unzip the tarballs (using Apple’s archive utility)
- I convert the AVIs to MP4s using HandBrake
- I load the MP4s and my audio into iMovie and splice everything together
- The final result is loaded onto YouTube.
In all ~10 programs are used (not even counting the programs we are actually screencasting about. We are going to record the screencast tomorrow, and I will do the editing Friday (I don’t think I can do it before then, as I have a big exam Friday morning).
Who knew that making a screencast would have so many problems?