A file gets rejected and the reason line says “no start timecode” or “incorrect start timecode”. The video is fine. The audio is fine. Nothing about playing the file locally suggests a problem, because locally there is not one.
Timecode is one of those fields that does nothing at all until it is the only thing that matters.
What start timecode is
Timecode labels each frame with a position: hours, minutes, seconds and frames, written HH:MM:SS:FF. Start timecode is the label on the first frame.
In a QuickTime or MP4 container it usually lives in its own track — a timecode track, type tmcd — sitting alongside video and audio. In MXF it is carried in the file's structural metadata. Either way it is separate from the picture, which is why a file can be perfect video with no timecode at all, and why a viewer that does not read the track will happily show you nothing amiss.
Why 10:00:00:00
The broadcast convention is that programme content starts at ten hours. It looks arbitrary. It is not.
Everything that comes before the first frame of programme needs somewhere to live: colour bars, tone, a slate, a countdown. Starting the programme at 10:00:00:00 leaves ten hours of timecode below it for all of that, without any of it having to sit at a negative value or wrap around midnight.
The wrap is the real reason. Timecode rolls over at 24 hours. A programme starting at 00:00:00:00 with thirty seconds of bars in front of it puts those bars at 23:59:30:00, and now the file's timecode decreases and then jumps. Systems that assume monotonic timecode break on that in ways that are tedious to diagnose.
Some houses use 01:00:00:00 instead, and multi-part deliveries sometimes encode the part number in the hours field — part two starting at 02:00:00:00 and so on. Whichever convention applies, it is in the spec, and picking a different one is a rejection.
Drop-frame, and the punctuation that signals it
At 29.97 fps, timecode and wall-clock time drift apart. Counting 30 frames per second when only 29.97 arrive means the timecode runs fast by about 3.6 seconds per hour.
Drop-frame timecode corrects this by skipping two frame numbers every minute, except on minutes divisible by ten. No frames are lost — the labels skip, the pictures do not. Over an hour that removes 108 numbers, which is very close to the drift.
The two are distinguished by punctuation. Non-drop uses a colon before the frames: 10:00:00:00. Drop-frame uses a semicolon: 10:00:00;00. It is one character, it is easy to miss in a spreadsheet, and delivering the wrong one to a system expecting the other produces content that lands progressively further from where the playlist says it should.
At 25 fps the problem does not exist, which is why European deliveries rarely mention it and American ones always do.
What breaks when it is missing or wrong
- Playlists and automation. A playout system schedules by timecode. A file whose first frame is labelled 00:00:00:00 when the playlist expects 10:00:00:00 either fails to load or starts in the wrong place.
- Conforming. An edit decision list refers to source timecode. If the delivered master has different timecode from the one the edit was cut against, every reference in the EDL points somewhere else.
- Subtitles and captions. Subtitle files carry in and out times, usually as timecode. Change the start of the video and every cue is offset by the same amount, which is exactly the failure that is easy to see and annoying to fix.
- Multi-part and versioned content. Anything assembled from several deliverables relies on their timecode agreeing.
What these have in common is that none of them show up when you open the file to check it. They show up in the system that consumes it, usually with a message that does not mention timecode.
Reading it before you deliver
The field is in the file. The awkwardness is that it is in a separate track, so tools that summarise a file by its video stream can omit it entirely, and a folder full of files means opening each one.
FileLister reads the timecode track during a scan and reports the start timecode as a column, with the drop-frame distinction preserved in the punctuation. Sorting a delivery folder by that column takes a second and answers two questions at once: whether every file has one, and whether they agree.
Files with no timecode track show the column empty, which is the answer you want to see explicitly rather than infer. For anything recurring, a filter set can require the field to be non-empty, or to start with a particular hour, and the failures export with the reason beside them.
The checks worth making
Four questions cover most rejections:
- Is there a timecode track at all? The most common failure by a distance, usually because the export preset did not include one.
- Does it start where the spec says? Almost always 10:00:00:00 unless told otherwise.
- Drop-frame or non-drop, and does that match? Only a question at 29.97 and 59.94.
- Do the files in the batch agree with each other? A batch where nine files start at ten hours and one starts at zero is a file that came from a different session.
None of these take more than a moment once the field is in front of you as a column. All of them take a phone call and a re-delivery once the file is with somebody else.