The most standard way of delivering presentations is recording the speaker and the slides on video. Only being an average computer user, I realize that this is a highly inefficient method. Too much data for not that much content.

Anatomy of a Presentation

One of the best examples on how to deliver presentations is Free Culture by Lawrence Lessig. It is available at

Its main features are:

  • It’s a single Adobe Flash file.
  • It contains a presentation slightly over thirty minutes.
  • Flash document is only 8.9 MB.
  • Excluding photos and two short videos, all other contents are vector graphics.
  • In another implementation, size decreases to 6.5 MB.1

Video for Presentations

Presentations don’t have the requirements of movies. Movies are measured in rates of frames per second. Presentations may have a similar rate in slides per minute. The former has to be constant in order to be able to display movement. But the latter is variable based on the discourse that the slides present.

When related to images, recording presentations as movies may be the wrong approach. The slides don’t need so many frames as movies. There is no gain in storing extra frames per slides. Frames for moving images have to be bitmap images. Slides may be stored as vector images, when they don’t contain videos or photos.

Only storing one frame for each slide will result in a dramatically decreased file size. And having vector images in all contents that can have it will improve the final image quality.

Recording Voice

Sound in a presentation is recorded voice. Human voice is easier to record than music. Compression rate for recorded voice may be higher than in music, because recorded voice contains less data.

Recorded voice may be also better compressed for another reason. Since its audio quality isn’t as demanding as in music, recorded voice may experience an almost negligible loss in quality with the corresponding decrease in size. Final users may even not notice any difference.

Using new compression formats—such as the Opus audio codec—may give similar results with lower compression rates.2

The Final Presentation

With presentations, vector video may be a reality. And this may be one of the most efficient ways of delivering presentations. In that format, presentations are contained in a single file, which is much smaller than a movie of the presentation.

Source Files

All what it is needed to generate a presentation with sound are two files:

  • The PDF documents that contains the slides.

    Depending on how they are generated, their content might be bitmaps or vector images.

  • The audio file that contains the recorded voice in uncompressed format (such as a .wav file).

Output Format

From the source files, the final presentation may be released in Flash format, since:

  • it preserves vector graphics when used,

  • it can store both slides and audio in a single file,

  • and it is able to play the presentation sycing audio and slides.

Of course, other formats—such as PDF itself—may be used. But this is a question to be investigated in the future.

The Key to Presentations

The key in having a complete presentation online from voice plus slides are transition times.

For that you need, a tool is needed to get from the slides in the PDF format:

  • The recorded voice.

  • The list of slide transitions.

In both cases, the tool records voice and transitions when the speaker is practising or giving the presentation. Both voice and transtions are recorded when the presentation is being created.

Trying to recreate transitions from slides and the already recorded voice would be a harder task for the person giving the presentation. And accuracy in transitions would be lower, if you had to recreate the presentation.

Even for a person with no programming ability (such as myself), it was possible to create a basic tool that records voice and transitions form the slides, and it also generates a Flash presentation from these data.

My Coding Attempt

Caveat lector

iRaccoonShow is the tool that records voice and slide transitions, and it generates presentations such as the ones described above.

Before you expect anything from that tool, you should consider the following. I cannot code. I was able to copy and paste some code form the the net and I got help from other people. Even if both Python files contain less than a thousand lines of code, I cannot maintain them.

If you want to name it that way, my only merit in the code above is the patience to test what could happen when introducing small changes. But my general ignorance on the topic didn’t make anything better. I checked it and it worked somehow. But I might have invested months in what it would have taken days or minutes to experienced programmers.

The previous warnings shouldn’t be considered as excuses. They are indications on what can be expected from the code and from its development status.


The dependencies are the following:

  • Python 2: it is the programming language for iRaccoonShow.

  • Python 2 bindings for:

    • GTK+2: it generates a minimal window when recording voice and transitions with the slides.

    • Poppler: it displays the PDF document with the slides.

    • GStreamer: it records the voice from the microphone.

    • SWFTools: it gets height and width from slides (required for the final presentation).

  • SWFTools: they convert the PDF slides and generate the final presentation with embedded and synced voice in Flash format.

Two Minimal Tools

iRaccoonShow contains two minimal command–line tools: reclides and supershow-generator.

recslides opens the PDF slides on the first one. A single mouse–click displays the window at full screen and audio starts to be recorded. Each single click advances one slide and records the transition time. When the last slide is reached, an extra click closes recslides, after generating the file with the audio and a text file with the transition times.

supershow-generator creates a presentation in Flash format, containing the slides, the embedded sound and the syncing. It also creates a Flash loader to be included on the page.3

Only Useful to Me

Although the code is publicy avialable, I’m afraid that it may be hardly usable. After years of the latest “stable release” (whatever this might mean), I only got a request for support installing and using the program.

In that request, I discovered that not all distributions package SWFTools with the Python module it contains. Having to use old bindings isn’t also an attractive option.

If iRaccoonShow is only useful to me, that means it is being useless to other people.

I think it is worth to investigate how to make iRaccoonShow really multiplatform, so that anyone with a computer may use it.


  1. Althought the format is the same for the whole presentation—Adobe Flash—and for the sound recording—MP3 compression—, Matthias Kramm achieved extra audio compression in SWFTools by removing some data from the embedded audio file (my guess). 

  2. Although the current generation method with iRaccoonShow only allows MP3 as audio compression format. 

  3. Otherwise, loading the page would require the loading of the whole presentation.