> ## Documentation Index
> Fetch the complete documentation index at: https://agenticadvertisingorg-snap-format-preview-links.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Video Ads

> Video ad formats in AdCP cover hosted files, VAST tags, inline XML, and multi-resolution encoding for pre-roll, mid-roll, and post-roll ads.

This guide covers how AdCP represents video advertising formats for online video, CTV, and streaming platforms.

## Video Format Characteristics

Video formats include:

* **Hosted Video** - Direct video file URLs served by publisher ad servers
* **VAST Tags** - Third-party ad server URLs returning VAST/VPAID XML
* **Inline VAST XML** - Complete VAST XML provided in creative manifest
* **Multiple Resolutions** - Same creative in different encoding profiles

Video ads play before (pre-roll), during (mid-roll), or after (post-roll) video content, or in-feed as out-stream video.

## Standard Video Formats

### Horizontal Video by Duration

#### 15-Second Video

```json theme={null}
{
  "$schema": "/schemas/core/format.json",
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "video_15s"
  },
  "name": "Standard Video - 15 seconds",
  "assets": [
    {
      "asset_id": "video_file",
      "asset_type": "video",
      "asset_role": "hero_video",
      "item_type": "individual",
      "required": true,
      "requirements": {
        "min_duration_ms": 15000,
        "max_duration_ms": 15000,
        "containers": ["mp4"],
        "codecs": ["h264"],
        "min_width": 1280,
        "max_width": 1920,
        "min_height": 720,
        "max_height": 1080,
        "max_file_size_kb": 30720,
        "min_bitrate_kbps": 4000,
        "max_bitrate_kbps": 10000,
        "audio_codecs": ["aac"]
      }
    }
  ]
}
```

#### 30-Second Video

```json theme={null}
{
  "$schema": "/schemas/core/format.json",
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "video_30s"
  },
  "name": "Standard Video - 30 seconds",
  "assets": [
    {
      "asset_id": "video_file",
      "asset_type": "video",
      "asset_role": "hero_video",
      "item_type": "individual",
      "required": true,
      "requirements": {
        "min_duration_ms": 30000,
        "max_duration_ms": 30000,
        "containers": ["mp4"],
        "codecs": ["h264"],
        "min_width": 1280,
        "max_width": 1920,
        "min_height": 720,
        "max_height": 1080,
        "max_file_size_kb": 51200,
        "min_bitrate_kbps": 4000,
        "max_bitrate_kbps": 10000,
        "audio_codecs": ["aac"]
      }
    }
  ]
}
```

#### 6-Second Bumper

```json theme={null}
{
  "$schema": "/schemas/core/format.json",
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "video_6s"
  },
  "name": "6-Second Bumper",
  "assets": [
    {
      "asset_id": "video_file",
      "asset_type": "video",
      "asset_role": "hero_video",
      "item_type": "individual",
      "required": true,
      "requirements": {
        "min_duration_ms": 6000,
        "max_duration_ms": 6000,
        "containers": ["mp4"],
        "codecs": ["h264"],
        "min_width": 1280,
        "max_width": 1920,
        "min_height": 720,
        "max_height": 1080,
        "max_file_size_kb": 15360,
        "min_bitrate_kbps": 4000,
        "max_bitrate_kbps": 10000
      }
    }
  ]
}
```

### Vertical/Mobile Video

```json theme={null}
{
  "$schema": "/schemas/core/format.json",
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "video_vertical_15s"
  },
  "name": "Vertical Video - 15 seconds",
  "assets": [
    {
      "asset_id": "video_file",
      "asset_type": "video",
      "asset_role": "hero_video",
      "item_type": "individual",
      "required": true,
      "requirements": {
        "min_duration_ms": 15000,
        "max_duration_ms": 15000,
        "aspect_ratio": "9:16",
        "min_width": 1080,
        "max_width": 1080,
        "min_height": 1920,
        "max_height": 1920,
        "containers": ["mp4"],
        "codecs": ["h264"],
        "max_file_size_kb": 30720
      }
    }
  ]
}
```

### CTV/OTT Video

CTV platforms have strict technical requirements that differ significantly from web video. Creative agents must produce assets that precisely match these specifications to avoid rejection.

#### Standard CTV Video (30s)

This format represents common CTV requirements across most platforms:

```json theme={null}
{
  "$schema": "/schemas/core/format.json",
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "video_30s_ctv"
  },
  "name": "CTV Video - 30 seconds",
  "assets": [
    {
      "asset_id": "video_file",
      "asset_type": "video",
      "asset_role": "hero_video",
      "item_type": "individual",
      "required": true,
      "requirements": {
        "min_duration_ms": 30000,
        "max_duration_ms": 30000,
        "containers": ["mp4", "mov"],
        "codecs": ["h264"],
        "min_width": 1920,
        "max_width": 1920,
        "min_height": 1080,
        "max_height": 1080,
        "aspect_ratio": "16:9",
        "min_bitrate_kbps": 6000,
        "max_bitrate_kbps": 15000,
        "max_file_size_kb": 512000,
        "frame_rates": [23.976, 24, 25, 29.97, 30, 59.94, 60],
        "frame_rate_type": "constant",
        "scan_type": "progressive",
        "min_gop_interval_seconds": 1,
        "max_gop_interval_seconds": 2,
        "gop_type": "closed",
        "moov_atom_position": "start",
        "audio_required": true,
        "audio_codecs": ["aac", "pcm"],
        "audio_sample_rates": [48000],
        "audio_channels": ["stereo"],
        "loudness_lufs": -24,
        "loudness_tolerance_db": 2,
        "true_peak_dbfs": -2,
        "ext": {
          "ctv_profile": {
            "color_space": "rec709",
            "hdr_format": "sdr",
            "chroma_subsampling": ["4:2:0"],
            "video_bit_depth": [8],
            "audio_bit_depth": [16, 24],
            "audio_bitrate_kbps_min": 192
          }
        }
      }
    }
  ]
}
```

#### Platform-Specific CTV Examples

Different CTV platforms have varying requirements. Sales agents should define formats matching their specific platform needs.

**Roku-Compliant Format:**

```json theme={null}
{
  "$schema": "/schemas/core/format.json",
  "format_id": {
    "agent_url": "https://sales.example.com",
    "id": "video_30s_roku"
  },
  "name": "Roku CTV - 30 seconds",
  "assets": [
    {
      "asset_id": "video_file",
      "asset_type": "video",
      "item_type": "individual",
      "required": true,
      "requirements": {
        "min_duration_ms": 30000,
        "max_duration_ms": 30000,
        "containers": ["mp4", "mov"],
        "codecs": ["h264", "prores"],
        "min_width": 1920,
        "max_width": 1920,
        "min_height": 1080,
        "max_height": 1080,
        "min_bitrate_kbps": 6000,
        "frame_rates": [23.976, 25, 29.97],
        "frame_rate_type": "constant",
        "scan_type": "progressive",
        "audio_codecs": ["pcm", "aac"],
        "audio_sample_rates": [48000],
        "audio_channels": ["stereo"],
        "loudness_lufs": -23,
        "loudness_tolerance_db": 2,
        "ext": {
          "roku_profile": {
            "audio_bit_depth": [16, 24],
            "audio_bitrate_kbps_min": 192
          }
        }
      }
    }
  ]
}
```

**Hulu-Compliant Format:**

```json theme={null}
{
  "$schema": "/schemas/core/format.json",
  "format_id": {
    "agent_url": "https://sales.example.com",
    "id": "video_30s_hulu"
  },
  "name": "Hulu CTV - 30 seconds",
  "assets": [
    {
      "asset_id": "video_file",
      "asset_type": "video",
      "item_type": "individual",
      "required": true,
      "requirements": {
        "min_duration_ms": 30000,
        "max_duration_ms": 30000,
        "containers": ["mp4", "mov"],
        "codecs": ["h264", "prores"],
        "min_width": 1280,
        "max_width": 1920,
        "min_height": 720,
        "max_height": 1080,
        "min_bitrate_kbps": 10000,
        "max_bitrate_kbps": 40000,
        "max_file_size_kb": 10485760,
        "frame_rates": [23.976, 24, 25, 29.97, 30],
        "frame_rate_type": "constant",
        "scan_type": "progressive",
        "audio_codecs": ["pcm", "aac"],
        "audio_sample_rates": [48000],
        "audio_channels": ["stereo"],
        "loudness_lufs": -24,
        "loudness_tolerance_db": 2,
        "ext": {
          "hulu_profile": {
            "chroma_subsampling": ["4:2:0", "4:2:2"],
            "audio_bit_depth": [16, 24],
            "audio_bitrate_kbps_min": 192,
            "audio_bitrate_kbps_max": 256
          }
        }
      }
    }
  ]
}
```

**YouTube CTV Format:**

```json theme={null}
{
  "$schema": "/schemas/core/format.json",
  "format_id": {
    "agent_url": "https://sales.example.com",
    "id": "video_30s_youtube_ctv"
  },
  "name": "YouTube CTV - 30 seconds",
  "assets": [
    {
      "asset_id": "video_file",
      "asset_type": "video",
      "item_type": "individual",
      "required": true,
      "requirements": {
        "min_duration_ms": 30000,
        "max_duration_ms": 30000,
        "containers": ["mp4"],
        "codecs": ["h264"],
        "min_width": 1280,
        "max_width": 1920,
        "min_height": 720,
        "max_height": 1080,
        "frame_rates": [24, 25, 30, 48, 50, 60],
        "scan_type": "progressive",
        "moov_atom_position": "start",
        "audio_codecs": ["aac"],
        "audio_sample_rates": [48000],
        "audio_channels": ["stereo"],
        "loudness_lufs": -14,
        "ext": {
          "youtube_profile": {
            "audio_bitrate_kbps_min": 128
          }
        }
      }
    }
  ]
}
```

#### SSAI-Ready CTV Format

For server-side ad insertion (SSAI) compatibility, GOP structure is critical:

```json theme={null}
{
  "$schema": "/schemas/core/format.json",
  "format_id": {
    "agent_url": "https://sales.example.com",
    "id": "video_30s_ssai"
  },
  "name": "SSAI Video - 30 seconds",
  "assets": [
    {
      "asset_id": "video_file",
      "asset_type": "video",
      "item_type": "individual",
      "required": true,
      "requirements": {
        "min_duration_ms": 30000,
        "max_duration_ms": 30000,
        "containers": ["mp4"],
        "codecs": ["h264"],
        "min_width": 1920,
        "max_width": 1920,
        "min_height": 1080,
        "max_height": 1080,
        "min_bitrate_kbps": 15000,
        "frame_rates": [29.97, 30],
        "frame_rate_type": "constant",
        "scan_type": "progressive",
        "min_gop_interval_seconds": 1,
        "max_gop_interval_seconds": 2,
        "gop_type": "closed",
        "moov_atom_position": "start",
        "audio_required": true,
        "audio_codecs": ["aac"],
        "audio_sample_rates": [48000],
        "audio_channels": ["stereo"]
      }
    }
  ]
}
```

### VAST Tag Formats

For third-party ad servers:

```json theme={null}
{
  "$schema": "/schemas/core/format.json",
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "video_30s_vast"
  },
  "name": "VAST Tag - 30 seconds",
  "assets": [
    {
      "asset_id": "vast_tag",
      "asset_type": "vast",
      "item_type": "individual",
      "required": true,
      "requirements": {
        "vast_version": "4.2"
      }
    }
  ]
}
```

### VPAID Interactive Video

```json theme={null}
{
  "$schema": "/schemas/core/format.json",
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "video_30s_vpaid"
  },
  "name": "VPAID Interactive - 30 seconds",
  "assets": [
    {
      "asset_id": "vpaid_tag",
      "asset_type": "vast",
      "item_type": "individual",
      "required": true,
      "requirements": {
        "vast_version": "4.2",
        "ext": {
          "vpaid": {
            "vpaid_version": ["2.0"],
            "api_framework": "VPAID",
            "vpaid_enabled": true
          }
        }
      }
    }
  ]
}
```

## Creative Manifests

### Hosted Video Manifest

```json theme={null}
{
  "$schema": "/schemas/core/creative-manifest.json",
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "video_30s"
  },
  "assets": {
    "video_file": {
      "asset_type": "video",
      "url": "https://cdn.brand.com/spring_30s.mp4",
      "duration_ms": 30000,
      "width": 1920,
      "height": 1080,
      "container_format": "mp4",
      "video_codec": "h264",
      "video_bitrate_kbps": 8000
    },
    "impression_tracker": {
      "asset_type": "url",
      "url_type": "tracker_pixel",
      "url": "https://track.brand.example/imp"
    },
    "landing_url": {
      "asset_type": "url",
      "url_type": "clickthrough",
      "url": "https://brand.example/spring-sale"
    }
  }
}
```

### VAST Tag Manifest (URL Delivery)

```json theme={null}
{
  "$schema": "/schemas/core/creative-manifest.json",
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "video_30s_vast"
  },
  "assets": {
    "vast_tag": {
      "asset_type": "vast",
      "delivery_type": "url",
      "url": "https://adserver.brand.example/vast",
      "vast_version": "4.2"
    }
  }
}
```

### Inline VAST XML Manifest

```json theme={null}
{
  "$schema": "/schemas/core/creative-manifest.json",
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "video_30s_vast"
  },
  "assets": {
    "vast_xml": {
      "asset_type": "vast",
      "delivery_type": "inline",
      "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<VAST version=\"4.2\">\n  <Ad>\n    <InLine>\n      <Impression><![CDATA[https://track.brand.example/imp]]></Impression>\n      <Creatives>\n        <Creative>\n          <Linear>\n            <Duration>00:00:30</Duration>\n            <MediaFiles>\n              <MediaFile delivery=\"progressive\" type=\"video/mp4\" width=\"1920\" height=\"1080\">\n                <![CDATA[https://cdn.brand.example/spring_30s.mp4]]>\n              </MediaFile>\n            </MediaFiles>\n            <VideoClicks>\n              <ClickThrough><![CDATA[https://brand.example/spring]]></ClickThrough>\n            </VideoClicks>\n          </Linear>\n        </Creative>\n      </Creatives>\n    </InLine>\n  </Ad>\n</VAST>",
      "vast_version": "4.2"
    }
  }
}
```

### Multi-Resolution Manifest

```json theme={null}
{
  "$schema": "/schemas/core/creative-manifest.json",
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "video_30s"
  },
  "assets": {
    "video_1080p": {
      "asset_type": "video",
      "url": "https://cdn.brand.com/spring_30s_1080p.mp4",
      "duration_ms": 30000,
      "width": 1920,
      "height": 1080,
      "video_bitrate_kbps": 8000
    },
    "video_720p": {
      "asset_type": "video",
      "url": "https://cdn.brand.com/spring_30s_720p.mp4",
      "duration_ms": 30000,
      "width": 1280,
      "height": 720,
      "video_bitrate_kbps": 5000
    },
    "video_480p": {
      "asset_type": "video",
      "url": "https://cdn.brand.com/spring_30s_480p.mp4",
      "duration_ms": 30000,
      "width": 854,
      "height": 480,
      "video_bitrate_kbps": 2500
    }
  }
}
```

## Video-Specific Macros

In addition to [universal macros](/docs/creative/universal-macros), video formats support:

### Video Content Context

* `{VIDEO_ID}` - Content video identifier
* `{VIDEO_TITLE}` - Content video title
* `{VIDEO_DURATION}` - Content duration in seconds
* `{VIDEO_CATEGORY}` - IAB content category
* `{CONTENT_GENRE}` - Content genre (news, sports, comedy)
* `{CONTENT_RATING}` - Content rating (G, PG, TV-14, etc.)
* `{PLAYER_WIDTH}` / `{PLAYER_HEIGHT}` - Video player dimensions in pixels

### Ad Pod Position

* `{POD_POSITION}` - Position within ad break (1, 2, 3, etc.)
* `{POD_SIZE}` - Total ads in this break
* `{AD_BREAK_ID}` - Unique ad break identifier

### Playback Context

* `{PLAYBACK_METHOD}` - auto-play-sound-on, auto-play-sound-off, click-to-play
* `{PLAYER_SIZE}` - small, medium, large, fullscreen
* `{VIDEO_PLACEMENT}` - in-stream, in-banner, in-article, in-feed, interstitial

### VAST Macros

AdCP macros (`{CURLY_BRACES}`) work alongside [IAB VAST 4.x macros](http://interactiveadvertisingbureau.github.io/vast/vast4macros/vast4-macros-latest.html) (`[SQUARE_BRACKETS]`):

* `[CACHEBUSTING]` - Random number for cache prevention
* `[TIMESTAMP]` - Unix timestamp
* `[DOMAIN]` - Publisher domain
* `[IFA]` - Device advertising ID (IDFA/AAID)
* `[REGULATIONS]` - Privacy regulation signals (GDPR, CCPA)
* `[DEVICEUA]` - Device user agent string

**Example mixing both macro formats:**

```
https://track.brand.com/imp?
  buy={MEDIA_BUY_ID}&
  video={VIDEO_ID}&
  device=[IFA]&
  domain=[DOMAIN]&
  cb=[CACHEBUSTING]
```

## Video Tracking Assets

### Standard Tracking Events

```json theme={null}
{
  "$schema": "/schemas/core/creative-manifest.json",
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "video_30s"
  },
  "assets": {
    "video_file": {
      "asset_type": "video",
      "url": "https://cdn.brand.com/video_30s.mp4",
      "width": 1920,
      "height": 1080
    },
    "impression_tracker": {
      "asset_type": "url",
      "url_type": "tracker_pixel",
      "url": "https://track.brand.example/imp"
    },
    "start_tracker": {
      "asset_type": "url",
      "url_type": "tracker_pixel",
      "url": "https://track.brand.example/start"
    },
    "quartile_25_tracker": {
      "asset_type": "url",
      "url_type": "tracker_pixel",
      "url": "https://track.brand.example/q25"
    },
    "quartile_50_tracker": {
      "asset_type": "url",
      "url_type": "tracker_pixel",
      "url": "https://track.brand.example/q50"
    },
    "quartile_75_tracker": {
      "asset_type": "url",
      "url_type": "tracker_pixel",
      "url": "https://track.brand.example/q75"
    },
    "complete_tracker": {
      "asset_type": "url",
      "url_type": "tracker_pixel",
      "url": "https://track.brand.example/complete"
    },
    "click_tracker": {
      "asset_type": "url",
      "url_type": "tracker_pixel",
      "url": "https://track.brand.example/click"
    }
  }
}
```

### Interactive Tracking Events

For formats supporting user interaction:

```json theme={null}
{
  "pause_tracker": {
    "asset_type": "url",
    "url_type": "tracker_pixel",
    "url": "https://track.brand.example/pause"
  },
  "resume_tracker": {
    "asset_type": "url",
    "url_type": "tracker_pixel",
    "url": "https://track.brand.example/resume"
  },
  "skip_tracker": {
    "asset_type": "url",
    "url_type": "tracker_pixel",
    "url": "https://track.brand.example/skip"
  },
  "mute_tracker": {
    "asset_type": "url",
    "url_type": "tracker_pixel",
    "url": "https://track.brand.example/mute"
  },
  "unmute_tracker": {
    "asset_type": "url",
    "url_type": "tracker_pixel",
    "url": "https://track.brand.example/unmute"
  }
}
```

## Common Aspect Ratios

* **16:9** (1920x1080, 1280x720) - Standard horizontal video
* **9:16** (1080x1920) - Vertical mobile video
* **4:3** (640x480) - Legacy format, rare
* **1:1** (1080x1080) - Square social video

## Video Placement Types

### Pre-Roll

Video ad plays before content starts. Most common placement.

**Common durations:** 6s, 15s, 30s

### Mid-Roll

Video ad plays during content breaks. Uses ad pod macros for position tracking.

**Common durations:** 15s, 30s

### Post-Roll

Video ad plays after content ends.

**Common durations:** 15s, 30s

### Out-Stream

Video ad plays in-feed or in-article, not in a video player.

**Common formats:** Vertical mobile video, in-feed video

## VAST/VPAID Integration

### VAST Versions

AdCP supports all VAST versions:

* **VAST 2.0** - Legacy support
* **VAST 3.0** - Adds verification and error handling
* **VAST 4.0** - Improved tracking, viewability
* **VAST 4.1** - Enhanced ad pod support
* **VAST 4.2** - Latest specification (recommended)

### VPAID Support

VPAID (Video Player Ad-Serving Interface Definition) enables interactive video ads:

```json theme={null}
{
  "$schema": "/schemas/core/format.json",
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "video_30s_vpaid"
  },
  "name": "VPAID Interactive - 30 seconds",
  "assets": [
    {
      "asset_id": "vpaid_tag",
      "asset_type": "vast",
      "item_type": "individual",
      "required": true,
      "requirements": {
        "vast_version": "4.2",
        "ext": {
          "vpaid": {
            "vpaid_version": ["2.0"],
            "api_framework": "VPAID",
            "vpaid_enabled": true
          }
        }
      }
    }
  ]
}
```

## File Specifications

### Video Codecs

* **H.264** - Most widely supported, required for CTV
* **H.265/HEVC** - Better compression, growing CTV support
* **ProRes** - High quality mezzanine, accepted by premium CTV
* **VP8/VP9** - Open codec, web-focused
* **AV1** - Next-gen open codec, emerging support

### Audio Codecs

* **AAC/AAC-LC** - Standard for MP4, widely supported
* **HE-AAC** - High-efficiency AAC for lower bitrates
* **PCM** - Uncompressed, preferred by some CTV platforms
* **AC-3/E-AC-3** - Dolby Digital, used in broadcast

### Container Formats

* **MP4** - Industry standard, required for most platforms
* **MOV** - QuickTime format, accepted by premium CTV
* **WebM** - Open format, web-focused

### Video Bitrate Ranges

* **Premium CTV (mezzanine):** 15-50 Mbps
* **Standard CTV:** 6-15 Mbps
* **High Quality Web (1080p):** 8-10 Mbps
* **Standard Quality (720p):** 4-6 Mbps
* **Mobile Optimized (480p):** 2-3 Mbps

### Frame Rates

* **Film:** 23.976 fps, 24 fps
* **PAL:** 25 fps
* **NTSC:** 29.97 fps, 30 fps
* **High frame rate:** 48 fps, 50 fps, 60 fps

CTV platforms require constant frame rate (CFR). Variable frame rate (VFR) will be rejected.

### Common Resolutions

**16:9 Landscape:**

* 1920x1080 (1080p Full HD) - Standard CTV
* 1280x720 (720p HD)
* 854x480 (480p SD)
* 3840x2160 (4K UHD) - Premium CTV

**9:16 Portrait:**

* 1080x1920 (Mobile vertical)

**1:1 Square:**

* 1080x1080 (Social video)

### Scan Type

CTV universally requires **progressive scan**. Interlaced content will be rejected.

### Color Space

* **Rec.709** - Standard for HD/SDR content (required by most CTV)
* **Rec.2020** - UHD/4K content
* **Rec.2100** - HDR content (HDR10, HLG)
* **sRGB** - Web content

### Chroma Subsampling

* **4:2:0** - Standard for delivery
* **4:2:2** - Broadcast/mezzanine quality

### Video Bit Depth

* **8-bit** - Standard SDR
* **10-bit** - HDR and premium SDR
* **12-bit** - Professional HDR

### GOP Structure (SSAI Critical)

For server-side ad insertion compatibility:

* **Keyframe interval:** 1-2 seconds
* **GOP type:** Closed GOP required
* **moov atom:** Must be at file start for progressive download

## Audio Specifications

### Sampling Rate

* **48 kHz** - Required for CTV (Roku, Hulu, Snapchat mandate this)
* **44.1 kHz** - CD quality, accepted by some platforms
* **96 kHz** - High resolution, accepted but not required

### Channel Configuration

* **Stereo (2 channels)** - Required for CTV ads
* **Mono** - Acceptable for some web/mobile
* **5.1/7.1** - Not supported for CTV ads

### Audio Bit Depth

* **16-bit** - Standard
* **24-bit** - High quality, accepted by premium CTV

### Audio Bitrate

* **CTV minimum:** 192 kbps
* **Standard web:** 128 kbps
* **High quality:** 256 kbps

### Loudness Standards

Different platforms normalize to different targets:

| Platform      | Target LUFS | Tolerance | Standard  |
| ------------- | ----------- | --------- | --------- |
| Broadcast/CTV | -24 LUFS    | ±2 dB     | ATSC A/85 |
| Spotify       | -16 LUFS    | ±1.5 dB   | -         |
| YouTube       | -14 LUFS    | -         | -         |

**True Peak:** Should not exceed -1 to -2 dBFS to prevent clipping

## Related Documentation

* [Universal Macros](/docs/creative/universal-macros) - Complete macro reference including video macros
* [Creative Manifests](/docs/creative/creative-manifests) - Manifest structure and asset specifications
* [Asset Types](/docs/creative/asset-types) - Video asset type definitions
