Search Documentation
Search across all documentation pages
Content-Aware

Content-Aware Encoding

Content-aware encoding analyzes your source video to optimize encoding parameters for each specific piece of content. Instead of using fixed bitrate ladders, Transcodely adjusts compression based on the visual complexity of each title — simple content (talking heads, animation) gets lower bitrates without quality loss, while complex content (action, sports) gets the bitrate it needs.

Content-aware encoding is configured via the content_aware object on an Output Specification.

Content-aware encoding adds a 1.15x feature multiplier to the output cost. See Pricing for details.


The ContentAwareConfig object

AttributeTypeRequiredDescription
modeenumYesContent-aware mode. One of: per_title, auto_abr. See Modes.
vmaf_targetnumberNoTarget VMAF score (70—99). Overrides the default VMAF target for the quality tier. See VMAF targeting.
auto_abrobjectNoConfiguration for automatic ABR ladder generation. Only valid when mode is auto_abr. See Auto ABR.

Modes

ModeAPI ValueDescription
Per-titleper_titleOptimizes the bitrate for each variant you define. Your ABR ladder structure (resolutions, codecs) stays the same, but the bitrate for each variant is adjusted based on content complexity to meet the VMAF target.
Auto ABRauto_abrAutomatically generates the entire ABR ladder. Transcodely analyzes the source and determines the optimal number of variants, resolutions, and bitrates. You specify constraints (min/max variants, resolution range).

VMAF targeting

VMAF (Video Multimethod Assessment Fusion) is a perceptual quality metric developed by Netflix. A VMAF score of 93+ is generally considered “excellent” quality with artifacts imperceptible to most viewers.

Content-aware encoding optimizes bitrates to achieve a target VMAF score. This means:

  • Simple content (interview, slideshow, animation) → lower bitrate, same perceived quality
  • Complex content (action movie, sports, concert) → higher bitrate to maintain quality

Default VMAF targets by quality tier

Quality TierDefault VMAF TargetDescription
economy88Good quality. Minor artifacts may be visible on close inspection.
standard93Excellent quality. Artifacts imperceptible to most viewers.
premium97Near-transparent quality. Visually lossless for most content.

Override the default with vmaf_target:

{
  "content_aware": {
    "mode": "per_title",
    "vmaf_target": 95
  }
}

Auto ABR

Auto ABR analyzes the source content and automatically builds an optimal ABR ladder. Instead of manually specifying each variant, you define constraints and let Transcodely determine the best configuration.

AutoABRConfig attributes

AttributeTypeDefaultDescription
min_variantsinteger2Minimum number of variants to generate (2—20).
max_variantsinteger8Maximum number of variants to generate (2—20).
min_resolutionenum480pLowest resolution to include. One of: 480p, 720p, 1080p, 1440p, 2160p, 4320p.
max_resolutionenumSource resolutionHighest resolution to include. Capped at source resolution. One of: 480p, 720p, 1080p, 1440p, 2160p, 4320p.

The auto ABR algorithm:

  1. Probes the source to extract metadata (resolution, frame rate, complexity)
  2. Analyzes content complexity (motion, texture, scene changes)
  3. Determines the optimal number of variants within your constraints
  4. Selects resolution and bitrate for each variant to meet the VMAF target
  5. Generates the ABR ladder
{
  "type": "hls",
  "video": [
    {"codec": "h264", "quality": "standard"}
  ],
  "content_aware": {
    "mode": "auto_abr",
    "vmaf_target": 93,
    "auto_abr": {
      "min_variants": 3,
      "max_variants": 6,
      "min_resolution": "480p",
      "max_resolution": "2160p"
    }
  }
}

When using auto_abr, the video array should contain a single variant that specifies the codec and quality tier. The auto ABR algorithm uses these as defaults for all generated variants.


Content analysis

When content-aware encoding is used, the job response includes a content_analysis object with details about the source content. This is available after probing completes.

AttributeTypeDescription
complexity_scorenumberOverall visual complexity (0.0—1.0). Higher values indicate more complex content that is harder to compress.
motion_scorenumberMotion intensity (0.0—1.0). Higher values indicate more movement between frames (sports, action).
texture_scorenumberTexture detail level (0.0—1.0). Higher values indicate fine detail, grain, or complex textures.
content_typestringDetected content type (e.g., "film", "animation", "sports", "gaming", "talking_head").

Example content analysis response:

{
  "content_analysis": {
    "complexity_score": 0.72,
    "motion_score": 0.85,
    "texture_score": 0.45,
    "content_type": "sports"
  }
}

Typical scores by content type

Content TypeComplexityMotionTexture
Talking head / interview0.15—0.300.05—0.150.10—0.25
Animation0.20—0.400.20—0.500.05—0.15
Film / drama0.40—0.650.30—0.600.30—0.55
Sports / action0.65—0.850.75—0.950.40—0.60
Gaming0.50—0.750.60—0.850.55—0.80
Concert / live event0.55—0.750.40—0.700.35—0.55

Examples

Per-title encoding with default VMAF

Use per-title mode with your existing ABR ladder. Transcodely adjusts the bitrate for each variant based on content complexity while preserving the quality tier’s default VMAF target.

{
  "type": "hls",
  "video": [
    {"codec": "h264", "resolution": "1080p", "quality": "standard"},
    {"codec": "h264", "resolution": "720p", "quality": "standard"},
    {"codec": "h264", "resolution": "480p", "quality": "economy"}
  ],
  "content_aware": {
    "mode": "per_title"
  }
}

Per-title with custom VMAF target

Override the quality tier default and target a specific VMAF score across all variants.

{
  "type": "dash",
  "video": [
    {"codec": "h265", "resolution": "2160p", "quality": "premium"},
    {"codec": "h265", "resolution": "1080p", "quality": "standard"},
    {"codec": "h265", "resolution": "720p", "quality": "standard"}
  ],
  "content_aware": {
    "mode": "per_title",
    "vmaf_target": 95
  }
}

Auto ABR with constraints

Let Transcodely build the ABR ladder automatically. The algorithm determines the optimal number of variants and their resolutions within the constraints you provide.

{
  "type": "adaptive",
  "video": [
    {"codec": "h264", "quality": "standard"}
  ],
  "content_aware": {
    "mode": "auto_abr",
    "auto_abr": {
      "min_variants": 3,
      "max_variants": 8,
      "min_resolution": "480p",
      "max_resolution": "2160p"
    }
  }
}

Auto ABR with AV1 and tight constraints

Combine AV1’s superior compression with auto ABR for maximum efficiency. Tighter variant constraints and a high VMAF target produce a compact, high-quality ladder.

{
  "type": "hls",
  "video": [
    {"codec": "av1", "quality": "premium"}
  ],
  "content_aware": {
    "mode": "auto_abr",
    "vmaf_target": 97,
    "auto_abr": {
      "min_variants": 4,
      "max_variants": 6,
      "min_resolution": "720p",
      "max_resolution": "2160p"
    }
  }
}

Validation rules

Transcodely validates content-aware configuration at job creation time. The following constraints are enforced:

RuleDescription
Mode requiredmode must be set to either per_title or auto_abr.
VMAF rangevmaf_target must be between 70 and 99 (inclusive) when specified.
Auto ABR config scopeauto_abr is only valid when mode is auto_abr. Setting it with per_title returns a validation error.
Variant count rangemin_variants and max_variants must each be between 2 and 20.
Variant count ordermin_variants must be less than or equal to max_variants.
Resolution ordermin_resolution must be less than or equal to max_resolution.
Max resolution capmax_resolution is capped at the source resolution. Requesting a higher resolution than the source does not upscale.
Auto ABR video arrayWhen using auto_abr, the video array must contain exactly one variant (the codec/quality template).