A Guide to Making Movies [RIPE Labs]

2009-10-06
software

While walking around the hallways at RIPE59, a couple of people asked me how the movies were made, what tools did I use and such. So here's a short summary on what I did to produce these movies.

Note: this is a repost from an article that was originally published on RIPE Labs.

Mind you, this is not a guide on how to produce art, rather a guide on what the technicalities are behind this gimmick.

Basically, you need to do (or rather, I did) the following:

  1. Have your data ready. Basically, you'll need to know what you want to show. For these movies the data comes from RIS table dumps, RIR's delegated files and the public IANA assignments pages, all processed in INRDB.
  2. Make the frames for the movie, ie. the pictures which, when shown in a sequence, will give the feel of an animation:

    1. For every movie I made one frame (picture) per day.
    2. The basic format for each picture is PNM, as that is one of the simplest formats possible, and it's very easy to read and write from programs or even scripts.
    3. The pictures themselves are produced by a simple C program (because of efficiency reasons, perl could also do the job). It reads textual input files that contain the data to be shown. The program:

      1. reads a background image (PNM)
      2. manipulates the bitmap by drawing sprites, rectangles and such and adding text (also as sprites)
      3. writes the output to a separate file (PNM)
    4. Once a frame is done in PNM, it's converted to PNG using pnmtopng, which is a part of the netpbm package. This is not strictly needed but makes life easier sometimes.

  3. Use some free tool to turn the individual picture into a movie. I used mencoder for this (which is a companion to mplayer). It's also capable of embedding audio if you want.

  4. Upload the movie to YouTube or some other video site.

So basically, following the good old UNIX pholisophy, there are a number of smaller steps, and each step is done by a small and efficient component implementing just that step.

I case you're wondering, the mencoder command I used was something like:


mencoder mf://some-directory/*.png -mf fps=25:type=png -ovc lavc -lavcopts vcodec=msmpeg4v2 -oac copy -o output.mpeg

Of course you can play around with codecs, frame speeds (fps) if you'd like.

Don't forget the popcorn!


© Kistel