For marketing at work, I needed to record, edit, and share a video of our software in action. In this post I will give you some tools to help you with this process. Every software I will talk about will be free (as in speech and as in beer) and available on the three majors desktop platforms (Linux, Mac OS X and Windows).

Step 1. Recording audio

Usually, I start by recording the audio of the script I wrote. I find it easier to record the video after but this a personal preference.

A great tool for this is Audacity. It has a pretty simple interface and you will be able to record your voice easily. Of course, you need a microphone on your computer, but every laptop today has one.

After I have recorded my voice, I will usually do some post processing using effects like Normalize (for volume) and Noise Reduction (to get rid of the blank noise). After some editing I export the project as a wave file that I will use later in the final editing.

Step 2. Recording video of your screen

There are a lot of tools on every platform to record video, but I find that one of the best is FFmpeg. It’s free and you can choose from a huge list of video codecs (like h264 or xvid) and containers (like avi, mp4, mkv). FFmpeg is the engine behind a lot of software that need video and audio decoding (such as VLC or Chrome).

You’ll need to find which device enables you to capture your screen. This is OS dependant and the ffmpeg wiki will give you examples.

If you have a large screen, you might want to use a smaller resolution before recording. This is because recording a big resolution will result in a large file and if you downscale the resolution in post processing, your viewers won’t be able to read text and other small elements. I use a resolution of 1280x720 (720p) for recording.

Next, you will have to choose a frame rate, a codec, a container and a quality of encoding. 30 frames per second is a pretty safe choice, and I choose to use h264 in lossless mode.

This is the command I’m using on OSX to record :

ffmpeg -r 30 -f avfoundation -capture_cursor 1 -framerate 30 -i "1" -c:v libx264 -crf 0 -x264opts keyint=15:min-keyint=15:scenecut=-1 -preset ultrafast out.mp4

Pretty basic stuff, except for the x264opts which I use to force a key frame every 15 frames. This is useful if you need to edit your video later, it will prevent artefacts. The quality of the video is based on the value of the crf flag. This value must be between 0 and 51, 0 being the best and 51 the worst. By using 0, x264 will be in lossless mode, and by adding -preset ultrafast I’m ensuring that my CPU will be able to cope with the encoding.

Step 3. Editing

This is where things get tricky. Video editing software is generally expensive and free editing software is scarce. If all you need is to cut sections of the video and add an audio track, I can recommend avidemux or virtualdub.

If you need a non linear editing tool, the only one I find usable is OpenShot. Initially created by Jonathan Thomas, it’s a free software tool backed by donations and more recently a kickstarter.

It’s not as good as Adobe Premiere or Final Cut Pro but you will be able to manage multiple tracks, split your audio and video files, and add effects and transitions easily.

You can export you project in a plethora of formats. You’ll have a lot of choices but I didn’t find anything about multiple passes or constant quality settings which are pretty basic options in video encoding. To get around this shortocming, I usually export the video with a pretty good bitrate (around 5 mb/s) and do a second encode with FFmpeg to get a much smaller file without much loss.

Conclusion

This was a quick overview of some of the free software enabling you to make a screencast, whichever OS you are using. You will get a great video without paying for proprietary software.