Friday, October 16, 2015

Recording Webinars – My Workflow

Each time I have to record a webinar, I have trouble remembering how exactly did I do it last time, so I decided to document my workflow. Maybe this will help somebody else besides me …

If you have any ideas on how to improve my workflow or if you have a different way of solving same problems, then please post it in the comment section. Thanks!

[v 1.01: Added screenshots of CamStudio and Filmora settings and few words on Audacity settings.]
[v 1.02: Added appendix A with some time&space information.]

0. Preparation

Webinar recording starts way back before the first word is spoken. I typically start with an outline where I decide what ideas I want to communicate to my listeners. Then I create slides and code examples (typically in parallel – a bit of this, a bit of that). At the end I write down script for the part of the presentation where slides are visible on the screen. The parts where I present something in the IDE are typically not scripted – I just notch down the important facts I want to tell and then improvise around that.

A webinar time is precious and having a good script greatly enlarges a quantity of information you’ll be able to present in a given time.

1. Microphone

The most important part of my workflow is also the first I use – a good microphone. No post processing will help you if you record yourself on a crappy headset mic. There’s lots of good stuff out there, but I didn’t want to spend too much on a piece of hardware I’m only using few times a year, so I bought what is probably the best cheap USB mic on the market – the Blue Snowball. Currently, you can get it on Amazon for under $60. (Two years ago I paid 99 €, so I would consider this a very good price.)

The trick with using a good microphone is to establish a proper distance between your mouth and the mic, so some testing is required to set up a comfortable and optimal working area. For this year’s CodeRage I actually put the microphone too far away when recording the “hands on” programming part and the level was quite low, but because the Snowball is such a good mic and because my environment was very quiet, I was able to fix that in post production.

This brings us to the second part – good environment. The room you are recording in should not be too small and definitely should not have bare walls as the echo will kill the recording. You’ll get many advices on the internet, but I solved this problem in a simple manner and I’m recording my webinars in the shared home office late at night when everybody else is asleep. At that time I can also shut down most of devices so the environmental hum is not too high.

2. Recording

For recording, I’m using the free open source CamStudio. (Camtasia is also popular choice.) I like to set up one of my monitors to the target video resolution (for example 1920 x 1080 for full HD) and record applications full-screen. The picture may be a bit crappy for me, as the monitor is not running on its native resolution, but that of course doesn’t affect the recording and it greatly simplifies window management.


For saving the recorded video I’m using the following settings:


Resulting files are big but they are later recompressed to MP4 so that’s not a problem.

While listening to the CodeRage sessions I noticed that frequently presenters record them in one go, as if they would be presenting on-line, so the sessions contain mistakes, which are fixed “on screen”, presenters are correcting the text on slides and so on. There’s really no need for that. If I can’t find correct words, I just pause for few seconds, rethink what I want to say and then say it again. The bad part can be easily cut out in the next step. If I find an error in the code or on slides, I pause the recording, correct the error and retry from the “last known good” point in the recording.

I also don’t record everything in one go. I rather work on smaller pieces, up to 10 minutes, which are then saved as separate .avi files. I also make a copy of each .avi on two different hard drives as soon as it is saved. This makes the whole process more fault tolerant. [It is really PITA to record the same thing three times, I tell you …]

3. Editing

Next I merge all the AVIs together into a movie. Recently I have started using Wondershare Filmora, a quite nice and inexpensive video editor for Windows and Mac. It tends to crash from time to time, but if you save often (and saving a project is extremely quick as only editing metadata is saved), you typically lose next to nothing.


In Filmora I arrange all AVIs on the timeline. Then I play the video to find all parts that were re-recorded and cut out all “bad” versions. This takes some time – typically twice the length of the recording – but the result is much more professional than a video presentation where you can constantly hear “ooops, sorry, that should actually be …”. I also cut out all pauses that are too long and parts when something irrelevant pops up during the source editing (if I’m not speaking at the same time, of course). In general, I try to make the recording as smooth as possible so there are no big distractions for the user.

If I find something that couldn’t be fixed, then I would re-record the problematic part at that point and insert it in the appropriate place.

At the end I export the video to MP4 with highest-quality presets. Video can always be recompressed to a lower quality, but it’s not possible to go in the other direction.


4. MP4Box

Next I use the free open source library mp4box in combination with (also free) user interface My MP4Box GUI in “Demux” mode to split the MP4 video into video and audio parts (two separate files). Audio will be needed in the next step.


5. Audio editing

In the last time-intensive step I use (free, open source) audio editor Audacity to clean up the audio. To edit the mp4 audio, you will also need the ffmpeg library. The process of downloading and integrating ffmpeg into Audacity is described here.


In Audacity I always follow this mini-workflow:

  • Remove the background noise (Effects, Noise Reduction).
  • Compress the audio (Effects, Compressor) to equalize loud and silent parts. I’m just using default settings.
  • Amplify selected parts that are still not loud enough (Effects, Amplify). I’m using default settings for this and just undo, tweak and repeat if I’m not satisfied with the result.
  • Remove the clicks to silence out the keyboard click-click-click sounds (Effects, Click Removal). Again, default settings worked for me so far.

Some are also recommending to run a high-pass 150 Hz filter to improve the audio, but you won’t have to do that if you have a good microphone. Effects, Equalization may also help to improve the recording under some occasions.

At the end I export the audio into an M4A (AAC) format.

6. Final Output

To create the final video I use the MP4Box in “Mux” mode to merge back video (created in step 4) and audio (created in step 5).


A. Some Numbers

It could be interesting to know how much work goes into a 40 minute webinar.

For my CodeRage X session I spent about four hours working on outline, code, slides, and the script. Then it took me about an hour and a half to record it. I spent about two hours editing the video in Filmora and about half an hour editing the audio in Audacity. Add the time I spent waiting for some of the utilities to complete the work (exporting MP4 from Filmora took around half an hour, for example) and you get a full working day. I like to prepare slowly, though, so in reality that was spread almost over a week, with a finishing sprint over the weekend (recording on Saturday night, editing on Sunday).

I have recorded 45 minutes of raw AVI files, which took 5,6 GB of my disk space. Resulting MP4 file is 39 minutes long (so I cut out 6 minutes of bad recording and long pauses) and measures 1,5 GB, 37 MB of which is taken by the audio.


  1. Anonymous20:24

    Thank you very much for this, it's not common to find such info around. Do you mind to provide the exact settings you use for the applications, for example CamStudio? For me it's a try-and-error approach to choose the proper video quality, frames, etc., so I'd appreciate if you could share yours since it's already proven to work.

    1. Good idea, I'll add that to the post.

  2. If you are using Ubuntu or some flavor of Debian and recording a VM, here are the equivalent apps:
    1) CamStudio = Simple Screen Recorder
    2) Filmora = Shotcut

    The rest of apps (Mp4Box and Audacity) have Linux versions.

  3. Posted version 1.02 where I added some information about the time spent & disk space used.

  4. Awesome. Thank you very much for putting this together.

  5. Thank you very much for sharing this information. Much appreciated.

  6. Thanks for sharing! To prepare my session, I used CamStasia and some of your steps can be done easily there. I will give a try to MP4Box to separate audio from video and pass it through Audacity (it would be great to strip off clicks and keyboard noise)! :-)
    And yes, I agree that making a webinar is a quite time consuming task!