Monday, March 18, 2013

Making a Narrated LibreOffice Impress (PowerPoint) Video using Linux

In my work, PowerPoint presentations are used a lot and recently, the trend recently has been to re-distribute these presentations as videos with audio narration so that others may watch it later. Some of the videos are of particularly poor quality with the audio and video coming from a camcorder pointed at the screen during the live presentation. I'm going to show you how to make a quality video using only LibreOffice Impress, FFmpeg, and KSnapshot.

These videos are handy for work, for creating video reviews for Newegg, and for creating how-to videos for YouTube. Especially since LibreOffice presentations can contain images, animations, and videos, you can really create some amazingly useful videos with this technique.

From a hardware side, you will need a decent microphone, of course. And if you have a multi-monitor setup it will make things easier during the recording of the video, but it's in no way necessary. The broad steps are:
  • Create the presentation.
  • Record it.
  • Clean it up and publish it.
So lets get started.

1. Get the tools.

Most openSUSE distributions will likely already include the tools you'll need. But as a double-check, execute from the commandline:
sudo zypper in libreoffice-impress ffmpeg ksnapshot kmix
KSnapshot and KMix only apply if you're using KDE. If you're using another desktop environment, then just make sure you have an audio mixer (or volume control) and a tool that can take screenshots.

2. Create the slides.
I won't go into any great detail about creating the slides other than to say that you should try and consider all of your users' needs. Some people might be watching on a cellphone, so keep the fonts and images big and legible. Some people might be hard-of-hearing, so make sure that the slides are at least somewhat self-descriptive. And some people might be color blind or have low vision, so use a high contrast color scheme. By taking your users' needs into account, you'll make your video more accessible and by extension, more useful.

3. Create the narration.

In Impress, there is a Notes tab above your slide. Here you can enter in a script to read during each slide. If you have a multi-monitor setup, then you can have the presentation on one screen for recording and your notes on the other. If you don't, then you can print out the notes (under Print, change Print Slides to Print Notes). Having a script will reduce the number of "ums" and "uhs", keep you on track, increase the professionalism of the video, and ultimately reduce the length, since you're not trying to remember what to say next.

4. Recording the video.
It's time to record the actual video. First, make sure that your hardware is ready. From an audio standpoint, you'll need to test out your microphone. The easiest way to do this is to use an existing audio program on your computer. I use Audacity for this and Skype works too. You can also find Flash websites online that will let you test your mic.

If your mic is part of a headset, then the boom should be to the side of your mouth. Putting it in front will make your breathing audible.

In KMix, adjust the microphone volume under Capture Devices. It should be approximately halfway. A program like Audacity is great for audio testing because it lets you see the waveform and you can see if your audio is clipping (because it is too loud).

Once you have your audio setup, get the room ready. You want to minimize all noise. Most microphones are very sensitive to external noises such as a TV on in the next room, your air conditioning, the neighbor's dog, etc. Sometimes you just can't record when you want to and you have to wait until everything else is quiet.

Recording the video with FFmpeg is really simple:
ffmpeg -f alsa -ac 1 -i default -f x11grab -r 20 -i :0.0 -sameq Original.mpg
Once you're done recording, press q to stop.

The -f switch says to record audio from Alsa. -ac sets the audio to one channel (mono). -i says to use the default audio source.

The second -f switch says to record video from x11 (i.e., your desktop). -r sets the frame rate; you don't need full motion video for a presentation, so slightly lower is okay. If you want, you can set this to 30, but the file size will be larger. -i sets the x11 desktop to record. -sameq sets the quantizer. If you have a multi-monitor setup like me, then you'll need a more complicated ffmpeg commandline. My monitor setup looks like this:

If I want to record from the second monitor, then I want to record a 1280x1024 window that has its origin at (1920,56). The FFmpeg command to do this is:
ffmpeg -f alsa -ac 1 -i default -f x11grab -s 1280x1024 -r 20 -i :0.0+1920,56 -sameq Original.mpg
Once you start recording, start the slide show (F5) and go through the slides. Once you are done, press q in the FFmpeg terminal to end the recording. Don't worry if you recorded a few seconds of getting ready at the beginning; getting rid of the garbage at the ends of the of video is the next step.

5. Trimming the video.

When you went to record the video, you captured a few seconds of junk at the beginning and at the end (you know, where you were making the presentation fullscreen and getting ready to speak). Now, we're going to trim that off so that we're left with the pure video.

There are a lot of nice, high-quality video editing applications for Linux, but since all we want to do is trim a few seconds of video, we're going to do it with FFmpeg.

First, you'll need to figure out how many seconds of video you want to trim at the beginning and how long the entire video should be. For example, if the original video is exactly six minutes long and there is 10 seconds of junk at the beginning and 15 seconds at the end, then the final video should be 5:35 in length.

You'll do this with FFmpeg with the following command:
ffmpeg -i Original.mpg -acodec copy -vcodec copy -ss 00:00:10 -t 00:05:35 Trimmed.mpg
This command is actually pretty fast and it should be complete in under a minute.

6. Publishing the video.

If you're publishing a video review on Newegg, they require that the final video be under 100MB. You can ensure the file is small enough with FFmpeg:
ffmpeg -i Trimmed.mpg -fs 100M 100MBVersion.mpg
The -fs switch specifies the maximum size of the final video and it provides a coarse way of controlling the quality as well. If you final video was going to be smaller than 100MB anyway, then this switch has no effect.

Publishing to YouTube is really straightforward and I won't go over it in detail here. Once you have the video up, you can then get an code from the video page for embedding it in your own webpage.

The only detail that you really need to pay attention to is the thumbnail. The thumbnail is what is shown in the embedded YouTube windows before the user clicks play and it is also what is shown in the search results on YouTube grabs some random frames of your video and offers them up as possible thumbnails, however the frames will be from the middle of your video and in most cases, one of the first slides will be the one you want for the thumbnail. Grab a screenshot using KSnapshot (press the "print screen" button on your keyboard to fire it up). The "select rectangular region" option of KSnapshot is a useful way to snip out a section of a slide. Once you have the thumbnail you want, you can upload it to YouTube for use with your video.

Direct Distribution

If you're going to share the video file with others, you might want to cut down the resolution first. This will give you a much smaller file size. If the original video was 1600x1200, you can cut it to a quarter (800x600) using:
ffmpeg -i Trimmed.mpg -s 800x600 QuarterSized.mpg
I have found that the resulting video's file size is usually less than a quarter of the original - about 20% is typical.

Then, you need to publish it. The file sharing service is up to you. I like Dropbox for work, but for this example, I've posted my results to Mega (see the next section).

7. The final results

So here's an example video I made. The quarter sized version is available for download here:
Download Video (1.1MB) 
And here's the embedded YouTube version:


  1. Thank you so much for this. I'm taking an online course and one of the assignments is to create a presentation with a narration, and they recommend you use powerpoint, which I didn't want to have to go out and buy. You just gave me a way to do this in linux. Really appreciate it, and I found myself saying, as I say a lot, gotta love linux!

  2. In agreement with aklimatizer re: Linux!! This'll help out heaps with my presentation--thank you!