I've been wanting to do screencasts on Linux for some time now,
and my big stumbling block has been determining what tools to
use.The tl;dr:Use recordMyDesktop to record video clips, but
afterwards, re-encode them to AVI (see the script
I used)Record audio to WAV, or convert compressed audio to WAV format
afterwards.Use OpenShot to stitch clips together and layer audio and video
tracks.Remember to reset the video length if you change the playback
rate.Export to a Web + Vimeo profile for best results.Stumbling BlocksrecordMyDesktop is a fairly simple tool, and allows
you to record actions you're taking, and simultaneously capture
audio. However, it creates an ".ogv" (Ogg Vorbis video file) —
which is basically useless for anybody not on Linux or FreeBSD.
Additionally, I often like to record in segments; this makes it
less likely that I'll make mistakes, and, if I do, I only need to
record a small segment again, not the entire thing.
recordMyDesktop is only for creating screencasts, not
merging them.So, recordMyDesktop went into my toolbox for the
purpose of recording the video portion of my screencasts.Which brings me to the next point: I also prefer to record the
audio separately from the screencast portion itself; this way I
don't get typing sounds in the recording, and I'm less likely to
lose my train of thought as I'm speaking. To this end, I ended up
using quite simply the "Sound Recorder" utility
(gnome-sound-recorder). It's not great, but with a
reasonable microphone, it gets the job done. I chose to record the
audio as MP3 files.However, this means that I now have video and audio tracks. So
my toolbox needed a utility for overlaying tracks and laying them
out on a timeline independently.I looked at a few different free tools for Linux, including
Avidemux, Cinelerra, and
PiTiVi. Avidemux was not featurful
enough, Cinelerra was too difficult to learn (it's
more of an advanced user's tool), and PiTiVi kept
crashing on me. So, I used the lazyweb, and tweeted a question
asking what others were using — and the unanimous response was
OpenShot (http://www.openshotvideo.com/).OpenShot hit the sweet spot for me -- it was easy
to pick up, and didn't crash. However, I discovered problems when I
exported my project to a video file. My video, regardless of
whether or not I changed the playback rate, always played at about
2X normal speed. The audio always truncated 1 to 2 seconds before
completion.In doing some research, I discovered:There are known issues with Ogg Vorbis video files. Evidently,
the compression creates issues when re-encoding the video to
another format.Similarly, compressed audio can lead to issues such as
truncation.Since recordMyDesktop doesn't allow you to select
an alternate video codec, I had to use mencoder to
transcode it to another format. I chose AVI (Audio Video
Interleave, a video container format developed by Microsoft), as I
knew it had widespread support, using an mpeg4 codec (also widely
supported). I used the following script, found at
http://askubuntu.com/questions/17309/video-converter-ogv-to-avi-or-another-more-common-format,
in order to encode my files:for f in *.ogv;do
newFile=${f%.*}
mencoder "$f" -o "$newFile.avi" -oac mp3lame -lameopts fast:preset=standard -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=4000
done
That solved the video issue, but I still had to solve the audio
issues. I quickly re-recorded one audio segment in Sound Recorder,
and told it to use the "Voice,Lossless (.wav type)". When I used
this version of the audio, I had no issues, other than the audio
length being mis-reported within OpenShot. Instead of
re-recording all segments, I installed the "Sound Converter"
utility (sudo aptitude install soundconverter), and
used that to convert all my MP3 files to WAV. Interestingly,
OpenShot reported the audio lengths correctly this
time; go figure.Once that was done, I was able to start stitching everything
together. A few notes, in the hopes others learn from my
mistakes:Several times, I wanted my video to playback slower. This is
very easy to do: right click on the clip, select "Properties", and
select the "Speed" tab, and adjust as necessary. However, that's
not all you need to do; you need to also re-adjust the
length of the clip. Simply take the existing length, and
divide it by the rate of play. As an example, if the length is 44
seconds, and you specify a 1/2 rate (0.5), you'd do 44 / 0.5 = 88,
and set the length of the clip to 88s.If you find that OpenShot is reporting your audio
clip lengths incorrectly, use another tool to find the accurate
length, and then set the length to that. I typically rounded up to
the next second, as most tools were giving the floor value from
rounding.I chose to export using the Web + Vimeo HD profile. This worked
perfectly for me. It created an mpeg4 file that I could preview in
a browser, and then upload without issues. Your mileage may
vary.Hopefully, this will serve as a reasonable guide for others
foraying into screencasts on Linux!Screencasting
on Linux was originally published 20 September 2012 on
https://mwop.net by Matthew Weier
O'Phinney.