The Timecode
What is it ?
The timecode is a numeric code that uniquely identifies a single frame in a digital video sequence. In DV video the timecode is recorded by the camcorder on the MiniDV tape; if recording is not interrupted (or if no recording gaps are allowed when restarted) the timecode numbering is continuous. Otherwise a tape includes many records separated by timecode breaks; each record starts with timecode 00:00:00:00.
By convention a timecode has the following format:
hh:mm:ss:ff
where:
-
•hh is a number of hours
-
•mm is a number of minutes (from 0 to 59)
-
•ss is a number of seconds (from 0 to 59)
-
•ff is a number of frames
The number of frames may range from 0 to 24 (PAL @ 25 fps), or 0 to 29 (NTSC @ 29.97 fps).
For NTSC drop frame, see the specific paragraph below.
In the most general case a frame may be uniquely identified by: reel name (manually handled), record number (if more than one record exists on a reel, due to timecode breaks), timecode within the record.
Timecode capturing by Final Cut Express
The timecode is captured by FCE together with video and audio, and recorded into the .mov file as a separate track. FCE uses the timecode information in its clips to link them to the captured media, and to allow their reconnection to the corresponding media file, in case they went Offline, or to allow Capture Projects.
Example of QuickTime Movie captured by FCE.

Before capturing, FCE asks to manually insert the reel name: in presence of timecode breaks some kind of record-id should also be recorded together with the reel name.
Note: The timecode is not captured by iMovie; iMovie creates a .dv file where audio and video are embedded in the same DV stream. That’s why importing media files captured by iMovie into FCE is not recommended: no future reconnection nor project capture is possible since the original timecode is lost.
Example of QuickTime Movie captured by iMovie.

Note that in the iMovie clip there is no timecode Track.
See also Importing iMovie clips for more discussion about iMovie .dv file format.
Its use in Final Cut Express
Different from Final Cut Pro, FCE never shows the absolute timecodes captured into the capture scratch media files, even though it uses them. Timecodes that appear in all windows are relative timecodes, that is, counters starting from 00:00:00:00 at the first frame of the clip media, or at the first frame of the sequence.
The only way to read the original timecode recorded in the media files is to use ad hoc filters, that are allowed to get this information through the fxscript language. My filter FCE Timecode Display is one of them.
Four timecodes are associated with each clip in FCE and FCP:
-
•Media Start: is the (original) absolute timecode of the first frame of the media file, as recorded by the camcorder - This information is visible in FCP, is hidden in FCE but is shown by FCE Timecode Display with format [hh:mm:ss:ff], where the brackets mean that it is an absolute timecode.
-
•Media End: is the (original) absolute timecode of the last frame of the media file, as recorded by the camcorder - This information is visible in FCP, is hidden in FCE but is shown by FCE Timecode Display with format [hh:mm:ss:ff], where the brackets mean that it is an absolute timecode.
-
•In: is the timecode of the IN point, relative to the Media Start of a clip, or to the Sequence start - This may be read in the FCE browser, when in List View.
-
•Out: is the timecode of the OUT point, relative to the Media Start of a clip, or to the Sequence start - This may be read in the FCE browser, when in List View.
-
Note that Duration field in the List View of the browser, measures the length of the clip (= Out - In + 1) while Length field measures the length of the media file (= Media End - Media Start + 1): all use the same timecode format.
The following figure shows an example of the clip Untitled in the FCE timeline and its timecodes. This snapshot was taken while clicking the clip with the slip tool: this may reveil a clip left and right handles (in the example below there is no right handle, though). The same convention used in the FCE Timecode Display are used here, and the same timecode values of the example in its description are used.

A new timecode starting from 00:00:00:00 is associated with any Sequence exported to QuickTime; however if an IN point is defined for the Sequence (for example at 00:01:00:00), the exported movie will start from its timecode, 00:01:00:00, and not from zero. In any case any original clip timecode is lost during export.
NTSC Timecodes
In the NTSC system at 29.97 fps each frame is identified by a timecode using the 30 fps drop frame convention.
Since at the 29.97 frame rate it is not possible to fit an integral number of frames into each second (for example as in 25 fps PAL systems), the 29.97 fps timecode fits 17,982 frames in 10 minutes. To achieve this it counts frames as if the frame rate were 30 fps, but every minute it drops the 2 frame numbers ending with ..:00 and ..:01, with the exception of minutes that are multiple of 10.
As a result, a total of 18 frame numbers (2 x 9 minutes) are dropped every 10 minutes, thus re-aligning the timecode numbering to the actual clock time.
In fact, while at 30 fps 18,000 frames are generated every 10 minutes, at the rate of 29.97 fps in the same period 17,982 frames are generated:
(10 min * 60 secs/min * 30 fps) - 18 frames = 17,982 frames
Note that no actual frame is dropped, but only frame numbers are dropped: drop frame timecode has nothing to do with frames dropped during capture, due to some camcorder connection problem or due to insufficient scratch disk speed.
When drop frame timecode is displayed, by convention a semicolon is used in place of the colon before the frame number, as follows:
hh:mm:ss;ff
As an example the following frame numbers are dropped:
First 10 minutes = Total of 17,982 frames
00:00:00:00 {not dropped}
00:00:00:01 {not dropped}
00:00:00:02
...
00:00:59:29
{00:01:00:00 - 1st frame number dropped}
{00:01:00:01 - 2nd frame number dropped}
00:01:00:02
...
00:01:59:29
{00:02:00:00 - 3rd frame number dropped}
{00:02:00:01 - 4th frame number dropped}
00:02:00:02
... {14 more frame numbers dropped, 2 each for minutes: 3, 4, 5, 6, 7, 8, 9}
00:09:59:29
Second 10 minutes = Total of 17,982 frames
00:10:00:00 {not dropped}
00:10:00:01 {not dropped}
00:10:00:02
...
00:10:59:29
{00:11:00:00 - 19th frame number dropped}
{00:11:00:01 - 20th frame number dropped}
00:11:00:02
...
