Movie Encoding

I intend to encode some home videos and DVD in order to get each of them in one or two CD-ROM.

I have some concerns about it:

  • I want to use open formats only. As a GNU/Linux and FreeBSD user, I refuse to use proprietary formats.
  • Although software patents are not (yet) enforceable in the European Banan Union, I would prefer to use formats that are not encumbered by patents.
  • It would be nice if one could expect that future salon media players will be able to play the produced CD.

Let’s see what my choices are…

Audio encoding: I will go with Ogg Vorbis (the MP3 format is patented by Thomson Consumer Electronics and the Fraunhofer Institute, and Ogg Vorbis is better anyway).

Video encoding: DivX, VP6 and VP7 are proprietary, but there are quite a few free codecs to choose from:

  • Experimental codecs such as Snow and Tarkin.
  • dirac, a codec developed by the BBC for broadcasting purposes.
  • Theora, a codec based upon On2 Technologies’ VP3 codec, developed by the Foundation as part of their Ogg project, suitable for streaming.
  • XviD, based on the old OpenDivX under a free software license.
  • libavcodec (lavc), from the FFmpeg project.
  • H.264/MPEG-4 AVC, thanks to the free x264 implementation.
  • Is there any free (as in freedom) implementation of the RV10 (Real Video) codec?

Container (an envelope for which there can be many audio, video and subtitles streams, allowing the user to store a complete movie or CD in a single file): Besides Microsoft’s AVI, ASF, RealMedia, etc there are a couple of nice options:

  • Apple’s QuickTime. While the QuickTime codec is proprietary, the .mov container seems to be well documented.
  • MP4 is based on the QuickTime file format, but unfortunately it seems to be patent encumbered and to support only MPEG codecs.
  • Ogg Media File (.ogm), a hack of the Ogg container format, developed by Tobias Waldvogel.
  • nut, a new open container format reportedly being developed by the mplayer & FFmpeg folks.
  • Matroska (.mkv), based on MCF, claims to be a modern, flexible, extensible, cross-platform multimedia container format.

After seeing this comparison of container formats I think Matroska is the best option as a container, but I’m still confused about which video codec I should use. So what do you guys recommend, and why?