

# Setting up timecodes
<a name="setting-up-timecode"></a>

AWS Elemental MediaConvert manages transcoded video frames by their timecode. The service uses the timecodes from the input and output timelines that it constructs to line up the elements of your output assets. For information about which features are affected by each type of timeline, and about how timelines work, see [How MediaConvert uses timelines to assemble jobs](specifying-inputs.md#how-mediaconvert-uses-timelines-to-assemble-jobs).

There are three distinct groups of timecode settings, located in three different places on the console:
+ Input timecode settings

  The input setting **Timecode source** affects the input timeline.
+ Job-wide timecode configuration

  The **Timecode configuration** settings under **Job settings** affect the output timeline.
+ Output timecode settings

  The timecode settings under **Output** determine whether and how timecode information appears in each output. These settings affect only what is included in the outputs; they don't determine what timecodes are.

To provide frame accuracy for video inputs, MediaConvert uses timecodes that specify frames by frame number, not by millisecond. All timecodes are in the following 24-hour format with a frame number: HH:MM:SS:FF. For drop frame, MediaConvert uses a semicolon before the frame number: HH:MM:SS;FF.

When you specify an input clip for an audio-only input, the last numbers in the timecode that you enter correspond to hundredths of a second. For example, 00:00:30:75 is the same as 30.75 seconds.

**Topics**
+ [

# Adjusting the input timeline with the input timecode source
](timecode-input.md)
+ [

# Adjusting the output timeline with the job-wide timecode configuration
](timecode-jobconfig.md)
+ [

# Inserting timecode metadata
](timecode-insertion.md)
+ [

# Burning in timecodes on the video frames
](timecode-burn-in.md)

# Adjusting the input timeline with the input timecode source
<a name="timecode-input"></a>

The value for **Timecode source** that you specify in an input's settings affects the input timeline for that input. For information about which features are affected by the input timeline, see [Input timelines](specifying-inputs.md#input-timelines).

**To adjust the input **Timecode source** setting (console)**

1. On the **Create job** page, in the **Job** pane on the left, choose an input.

1. Under **Video selector**, **Timecode source**, specify whether MediaConvert reads timecodes from the input or generates them. MediaConvert can generate timecodes starting from zero or from a starting timecode that you specify. Here are the options for **Timecode source**:
   + **Embedded**: The service uses any timecodes embedded in the input video. This is the default value. 
**Note**  
Don't choose this value unless your input video has embedded timecodes.
   + **Start at 0**: The service sets the timecode of the first frame of the input to 00:00:00:00.
   + **Specified start**: The service sets the timecode of the first frame of the input to the value that you specify in the setting **Start timecode**.

   Regardless of the source, timecodes are in the following 24-hour format with a frame number: HH:MM:SS:FF.

**To adjust the input `TimecodeSource` (**Timecode source**) setting (API, SDK, and AWS CLI)**
+ In your JSON job specification, set a value for [TimecodeSource](https://docs.aws.amazon.com/mediaconvert/latest/apireference/jobs.html#jobs-model-inputtimecodesource), located in `Settings`, `Inputs`.

  Choose a value for `TimecodeSource` as follows:
  + **EMBEDDED**: The service uses any timecodes embedded in the input video. This is the default value. 
**Note**  
Don't choose this value unless your input video has embedded timecodes.
  + **ZEROBASED**: The service sets the timecode of the first frame of the input to 00:00:00:00.
  + **SPECIFIEDSTART**: The service sets the timecode of the first frame of the input to the value that you specify in the setting **Start timecode**.

# Adjusting the output timeline with the job-wide timecode configuration
<a name="timecode-jobconfig"></a>

The values that you specify for the job-wide **Timecode configuration** settings affect the output timeline. For information about which features are affected by the output timeline, see [Output timeline](specifying-inputs.md#output-timeline).

**To adjust the job-wide timecode configuration (console)**

1. On the **Create job** page, in the **Job** pane on the left, choose **Settings**.

1.  In the **Timecode configuration** section, for **Source**, choose one of the following values:
   + **Embedded**: The service uses any timecodes that are embedded in the video.
   + **Start at 0**: The service ignores any embedded timecodes and assigns the first video frame the timecode 00:00:00:00 (HH:MM:SS:FF).
   + **Specified start**: The service ignores any embedded timecodes and assigns the first video frame the value that you provide for **Start Timecode**. 

     The **Start Timecode** field appears when you choose **Specified start**.

   If you use the API or an SDK, you can find this setting in the JSON file of your job. The setting name is `Source`, located inside `Settings`, `TimecodeConfig`.

   If you don't choose a value for **Source**, the service defaults to **Embedded**.
**Note**  
If your input video doesn't have embedded timecodes and you set **Source** to **Embedded** or keep **Source** unspecified, your output won't have timecodes. This means that features that require a timecode-based start time, such as sidecar captions and graphic overlays, won't appear in your output.

1. Set a value for **Anchor Timecode**.

   If you use an editing platform that relies on an anchor timecode, use **Anchor timecode** to specify a point at which the input and output frames have the same timecode. Use the following 24-hour format with a frame number: HH:MM:SS:FF. This setting ignores frame rate conversion.

   The system behavior for **Anchor timecode** varies depending on your setting for **Source**:
   + If you choose **Start at 0** for **Source**, the anchor frame is the timecode that you provide in **Anchor timecode**, counting from 00:00:00:00. 

     For example, if you set **Anchor timecode** to 01:00:05:00, the anchor frame is one hour and five seconds into the video.
   + If you choose **Embedded** for **Source**, the anchor frame is the timecode that you provide in **Anchor timecode**, counting from the first embedded timecode. 

     For example, if your embedded timecodes start at 01:00:00:00 and you set **Anchor timecode** to 01:00:05:00, the anchor frame is five seconds into the video.
   + If you choose **Specified start** for **Source**, the anchor frame is the timecode that you provide in **Anchor timecode**, counting from the timecode that you specify for the first frame.

     For example, if you specify 00:30:00:00 as your start timecode and you set **Anchor timecode** to 01:00:05:00, the anchor frame is thirty minutes and five seconds into the video.

   If you use the API or an SDK, you can find this setting in the JSON file of your job. The setting name is `Anchor`, located in `Settings`, `TimecodeConfig`.

   If you don't set a value for **Anchor timecode**, the service doesn't use any anchor timecode.

1. Under **Timestamp offset**, provide a date. This setting applies only to outputs that support a program-date-time stamp. Use **Timestamp offset** to overwrite the timecode date without affecting the time and frame number. This setting has no effect unless you also include the program-date-time stamp in the output.

   If you use the API or an SDK, you can find this setting in the JSON file of your job. The setting name is `TimestampOffset`, located in `Settings`, `TimecodeConfig`.

**To adjust the job-wide timecode configuration (API, SDK, and AWS CLI)**

1. In your JSON job specification, set a value for [Source](https://docs.aws.amazon.com/mediaconvert/latest/apireference/jobs.html#jobs-prop-timecodeconfig-source), located inside `Settings`, `TimecodeConfig`. Choose one of the following values:
   + **EMBEDDED**: The service uses any timecodes that are embedded in the video.
   + **ZEROBASED**: The service ignores any embedded timecodes and assigns the first video frame the timecode 00:00:00:00 (HH:MM:SS:FF).
   + **SPECIFIEDSTART**: The service ignores any embedded timecodes and assigns the first video frame the value that you provide for **Start Timecode**. 

     The **Start Timecode** field appears when you choose **Specified start**.

   If you don't choose a value for **Source**, the service defaults to **Embedded**.
**Note**  
If your input video doesn't have embedded timecodes and you set **Source** to **Embedded** or keep **Source** unspecified, your output won't have timecodes. This means that features that require a timecode-based start time, such as sidecar captions and graphic overlays, won't appear in your output.

1. Optional. In your JSON job specification, set a value for `Anchor`, located in `Settings`, `TimecodeConfig`.

   If you use an editing platform that relies on an anchor timecode, use `Anchor` to specify a point at which the input and output frames have the same timecode. Use the following 24-hour format with a frame number: HH:MM:SS:FF. This setting ignores frame rate conversion.

   The system behavior for `Anchor` varies depending on your setting for `Source`:
   + If you choose `ZEROBASED` for `Source`, the anchor frame is the timecode that you provide in `Anchor`, counting from 00:00:00:00. 

     For example, if you set `Anchor` to 01:00:05:00, the anchor frame is one hour and five seconds into the video.
   + If you choose `EMBEDDED` for `Source`, the anchor frame is the timecode that you provide in `Anchor`, counting from the first embedded timecode. 

     For example, if your embedded timecodes start at 01:00:00:00 and you set `Anchor` to 01:00:05:00, the anchor frame is five seconds into the video.
   + If you choose `SPECIFIEDSTART` for `Source`, the anchor frame is the timecode that you provide in `Anchor`, counting from the timecode that you specify for the first frame.

     For example, if you specify 00:30:00:00 as your start timecode and you set `Anchor` to 01:00:05:00, the anchor frame is thirty minutes and five seconds into the video.

1. Optional. In your JSON job specification, set a value for `TimestampOffset`, located in `Settings`, `TimecodeConfig`. Specify the date in the following format: `YYYY-MM-DD`. For example, `2008-06-26`.

   This setting applies only to outputs that support a program-date-time stamp. Use **Timestamp offset** to overwrite the timecode date without affecting the time and frame number. This setting has no effect unless you also include the program-date-time stamp in the output.

# Inserting timecode metadata
<a name="timecode-insertion"></a>

The **Timecode insertion** setting determines whether a given output has timecodes embedded in its metadata. MediaConvert automatically puts this information in the appropriate place, depending on the output codec. For MPEG-2 and QuickTime codecs, such as Apple ProRes, the service inserts the timecodes in the video I-frame metadata. For H.265 (HEVC) and H.264 (AVC), the service inserts the timecodes in the supplemental enhancement information (SEI) picture timing message. 

**To include timecode metadata in an output (console)**

1. On the **Create job** page, in the **Job** pane on the left, choose an output.

1. Under **Stream settings**, **Timecode insertion**, choose **Insert** to include timecode metadata. Choose **Disabled** to omit timecode metadata.

**To include timecode metadata in an output (API, SDK, and AWS CLI)**
+ In your JSON job specification, set a value for [TimecodeInsertion](https://docs.aws.amazon.com/mediaconvert/latest/apireference/jobs.html#jobs-prop-videodescription-timecodeinsertion), located in `Settings`, `OutputGroups`, `Outputs`, `VideoDescription`.

  Use `PIC_TIMING_SEI` to include timecode metadata. Use `DISABLED` to omit timecode metadata.

# Burning in timecodes on the video frames
<a name="timecode-burn-in"></a>

The **Timecode burn-in** setting determines whether a given output has visible timecodes inscribed into the video frames themselves. The timecodes are not an overlay, but rather a permanent part of the video frames.

**To burn in timecodes in an output (console)**

1. On the **Create job** page, in the **Job** pane on the left, choose an output.

1. Under **Stream settings**, **Preprocessors**, choose **Timecode burn-in**.

1. Optionally, provide values for the **Prefix**, **Font size**, and **Position** settings. Even if you don't provide these values, timecodes are burned into your output using these default values: 
   + **Prefix**: no prefix
   + **Font size**: **Extra Small (10)**
   + **Position**: **Top Center**

   For details about each of these settings, choose the **Info** link next to **Timecode burn-in**.

**To burn in timecodes in an output (API, SDK, and AWS CLI)**

1. In your JSON job specification, include the setting [TimecodeBurnin](https://docs.aws.amazon.com/mediaconvert/latest/apireference/jobs.html#jobs-prop-videopreprocessor-timecodeburnin). `TimecodeBurnin` is located in `Settings`, `OutputGroups`, `Outputs`, `VideoDescription`, `VideoPreprocessors`.

1. Optionally, provide values for the settings that are children of `TimecodeBurnin`. If you don't provide these values, timecodes are burned into your output using these default values: 
   + `Prefix`: *no prefix*
   + `FontSize`: `10`
   + `Position`: `TOP_CENTER`