Understanding ‘Intermediate’ and ‘Delivery’ video formats

Among newbie videographers it’s a difficult concept to understand the difference between video formats that are meant for “editing work” (intermediate), and for formats that are meant for “sharing and viewing” (delivery). So, here’s a quick rundown.

There are times where you need to do things like the following:
* Transfer your already edited footage from one application to another.
* Transfer your already edited footage from one video project to another.
* Insert an originally 50i/60i footage to a 24p timeline.
* Time-stretch your footage more than 4x (at least on Vegas you need to export and re-import to stretch another 4x).
* You shot your video in uncompressed format and you need to make the file sizes smaller.
* You need a format that’s more suitable for editing.
* Archive your edited footage.

For these usages, you need a “lossless” codec format that doesn’t lose quality during the export. Such codecs are: Cineform, Lagarith, Huffyuv, Intel Cinepack, Apple Intermediate Format, plain uncompressed and lots more. Please note that lossless codecs create huge files. For example, a 15 second HD footage will yield a 300 MB file, and although this sounds too much and it’s slow to decode, it is nothing compared to 3 GBs that the “uncompressed” codec will yield for the same HD footage. The slowness and huge files pay you back with no loss of quality. I would suggest you go with Cineform if your NLE has import/export support for it (Vegas ships with a “medium quality” licensed copy of Cineform), or the open source Lagarith codec (to configure Lagarith to create smaller files you will need to follow steps 9 to 11). If you are exporting to something like FFmpeg, Mencoder or Avidemux2, you will need to use Huffyuv (follow steps 2 and 3 to configure it to create smaller files before its first usage).

The final part you will need to understand is that most of these lossless codecs are saved as “avi” or “mov”. These filetypes are not codec formats, but container formats. They are simply file formats that “hosts” inside them different kinds of codecs. This is why it’s possible to have DivX .avi files, and Cineform or Lagarith .avi files and yet, the same media player that can play one .avi format can’t necessarily play another. Just by looking at the file name you can’t tell which format “lives” inside that .avi or .mov file. You will have to use applications that can read these formats and tell you what’s saved inside. Same goes for .mp4, .mkv, .ogg and other container formats. Apple is saving their Intermediate Format lossless codec files in .mov, but so it does for all the other kinds of codec formats, so you will need to open Quicktime’s “inspector” window to find out how these files were encoded. Other container formats are the open source implementations of .mkv Matroska files and the .ogg files (which can host both Vorbis audio and Theora video — Vorbis is the audio codec, Theora is the video codec, and OGG is the container format that can host them both).

Regarding “end user” viewing formats (also known as “delivery formats”), these are, but not limited to, codecs like h.264, DivX/XViD, WMV, plain mpeg-4, mpeg2, mpeg, Theora, 3GP/h.263, FLV and many more. These are all “lossy” codecs and are meant for distribution and user viewing only. They compress very well (e.g. the 300 MB file we talked about earlier can be compressed down to 10 MBs with one of these babies), but being lossy it means that the quality is not as good as the original footage. This is ok though, as most people don’t notice much, and having small filesizes helps with the delivery and easier playback aspects.

The rule of thumb is that you can export in lossless formats as many times as it is required to do your job, but only export to a lossy “delivery” format ONCE. This way, you minimize the loss of quality on the final render — the one that’s meant to reach your viewership.

My personal preferences that are the best bets for compatibility, are: Lagarith for intermediate format usages between Windows applications, Huffyuv for intermediate format usages when I need to export to Linux-oriented apps, the (unfortunately) lossy .m2t mpeg2 format if I need to export for Mac video applications, and h.264/AAC (inside the .mp4 container) for user distribution on the internet and video playback devices. Of course, if you have the cash, you can buy the full Cineform suite that will allow you to use their “best quality setting” for their codec on both PCs and Macs (not Linux though). However, if you only work with a single operating system, then there are free solutions that perform as well.


Richard wrote on October 22nd, 2007 at 2:02 AM PST:

ffmpeg has a number of lossless codecs, that might be interesting, and they are potentially useable in windows apps through the directshow-filter ffdshow. I wonder how they perform in terms of compression rate and cpu load.

This is the admin speaking...
Eugenia wrote on October 22nd, 2007 at 12:25 PM PST:

>ffmpeg has a number of lossless codecs

Nope, I didn’t find any other that was supported by NLEs too. It won’t support Cineform for example, neither Lagarith, I tried. Huffyuv was the only one that went smooth. MJPEG is not lossless btw, if that’s what you are thinking.

Richard wrote on October 22nd, 2007 at 3:40 PM PST:

I was referring to the ffv1 and ffvhuff codecs, that are SPECIFIC to ffmpeg, and my intention was to think about them in terms of performance and potential, and not necessarily as ready usable solutions. 😉

This is the admin speaking...
Eugenia wrote on October 22nd, 2007 at 4:06 PM PST:

I don’t know about the v1, but the ffvhuff is nothing but the Huffyuv codec I mention above.

Richard wrote on October 23rd, 2007 at 4:25 AM PST:

It is, although I am under the impression that they changed it slightly so it is not compatible with other huffyuv variants, I did not test that though.

Comments are closed as this blog post is now archived.

Lines, paragraphs break automatically. HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

The URI to TrackBack this blog entry is this. And here is the RSS 2.0 for comments on this post.