Skip to content

Proposal (3.3): add 3gp, mpeg and m4v to video containers #8107

Open

Description

@andybevan-scope3

Summary

Add 3gp, mpeg and m4v to the containers enum in
static/schemas/source/core/requirements/video-asset-requirements.json.

Problem

containers lists the video file types a seller accepts. Today it allows
only mp4, webm, mov, avi and mkv. Several ad platforms accept
containers outside this list: TikTok's video upload spec accepts 3gp and
mpeg, and Pinterest's accepts m4v.

A seller representing those platforms can't describe what it accepts in
valid AdCP. It has to either drop the values, understating what it accepts,
or send values that fail validation.

Proposal

- "enum": ["mp4", "webm", "mov", "avi", "mkv"]
+ "enum": ["mp4", "webm", "mov", "avi", "mkv", "3gp", "mpeg", "m4v"]
  • 3gp: 3GPP container (.3gp)
  • mpeg: MPEG program stream (.mpeg, .mpg)
  • m4v: MPEG-4 video (.m4v)

Compatibility

The change only widens the list, but a receiver validating against 3.2
would reject the new values, so it isn't wire compatible within 3.2. This
targets 3.3 rather than a 3.2.x patch.

Activity

  1. added this to the 3.3.0 milestone on Oct 9, 2026
  2. added
    enhancementNew feature or request
    schemaJSON Schema source-of-truth: definitions, codegen artifacts, validation, hygiene
    on Oct 9, 2026
  3. added
    claude-triagingTriage routine is actively working on this issue (1-3 min)
    on Oct 9, 2026
  4. bokelley commented on Oct 9, 2026

    @bokelley
    Contributor

    Triage

    Classification: Feature request
    Bucket(s): spec / protocol
    Status: clarify
    Milestone: 3.3.0 (#10)

    What the experts said:

    • ad-tech-protocol-expert: 3gp and m4v are unambiguous and sound; mpeg is the blocker — the sibling VAST schema already uses mpeg_ts as the identifier for transport streams, so mpeg needs to pick a lane before the token can ship.
    • adtech-product-expert: m4v has a live Apple ecosystem CTV/OTT use case; 3gp has no meaningful programmatic footprint in 2026 and should be held unless a live platform still requires it; mpeg doesn't align with OpenRTB/VAST naming conventions — ts (MPEG Transport Stream) would serve real SSAI/broadcast sellers better.

    My take: m4v is clear and ready to ship in 3.3. mpeg is independently flagged by both experts as ambiguous, and the existing mpeg_ts token in the VAST schema makes naming alignment a real concern. 3gp's relevance in 2026 programmatic is disputed.

    Three questions before the PR scope is locked:

    1. Does mpeg mean MPEG-1/2 program stream (.mpg, video/mpeg) or MPEG-2 transport stream (video/mp2t)? If it's the latter, the sibling VAST schema uses mpeg_ts — please align the token.
    2. Is 3gp still required on any live programmatic platforms in 2026, or is mp4 a sufficient stand-in? If you can name a platform, that resolves the hold.
    3. Should the PR simultaneously relax the closed containers enum to an open pattern (matching the VAST schema's ^[a-z0-9][a-z0-9._+-]*$)? That would be a one-time fix that avoids a minor bump the next time a new container needs expression.

    Triaged by Claude Code. Session: https://claude.ai/code/session_01XMecS7rbLKAJa7gende8Dv


    Generated by Claude Code

  5. added
    claude-triagedIssue has been triaged by the Claude Code triage routine. Remove to re-triage.
    and removed
    claude-triagingTriage routine is actively working on this issue (1-3 min)
    on Oct 9, 2026
  6. andybevan-scope3 commented on Oct 9, 2026

    @andybevan-scope3
    CollaboratorAuthor
    1. mpeg means the MPEG-1/2 program stream (.mpeg / .mpg, video/mpeg), not transport stream.
    2. TikTok's ad video spec accepts 3gp (and mpeg) today, so it's needed for a live platform.
    3. An open pattern like the VAST schema's would work for us and avoid another minor bump next time.
  7. andybevan-scope3 commented on Oct 9, 2026

    @andybevan-scope3
    CollaboratorAuthor

    3b. The same applies to the canonical video_hosted format's params.containers (formats/canonical/video_hosted.json), which is narrower still: mp4, webm, mov (plus mxf on main). Whatever we decide here, adding the values or moving to an open pattern, should apply to both lists.

    Related: is there a reason these are two separate lists? They describe the same thing (accepted video containers) but have already drifted apart. A single shared definition, like the hoisted enums in enums/ from #3174, would keep them in step.

    Should the canonical params.containers list be covered by this issue, or would you like a separate issue for it?

  8. bokelley commented on Oct 31, 2026

    @bokelley
    Contributor

    Proposed to ship in 3.3 by consent: three additive enum values. Objections by Fri 2026-11-06.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

claude-triagedIssue has been triaged by the Claude Code triage routine. Remove to re-triage.enhancementNew feature or requestschemaJSON Schema source-of-truth: definitions, codegen artifacts, validation, hygiene

Type

No type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions