Mux

The Mux Developer Hub

Welcome to the Mux developer hub. You'll find comprehensive guides and documentation to help you start working with Mux as quickly as possible, as well as support if you get stuck. Let's jump right in!

Get Started

Per-Title Encoding

Because every video is different, it is inefficient to apply the same encoding to every title.

The solution to this is per-title encoding. Per-title encoding analyzes an individual video to determine the ideal encoding ladder. The result is that different videos are streamed at different resolutions and bitrates, and every video looks better - often by up to 20%-30%.

As a concrete example, the video on the left looks best at 2Mbps when encoded to 1080p; the video in the middle looks best at 432p; and the video on the right looks best at 540p.

Most per-title encoding approaches are slow and expensive, requiring dozens or even hundreds of throwaway encodes for every video. Thanks to the power of AI, Mux does this in seconds at no additional charge via the Instant Per Title Encoding feature.

The result of Instant Per Title Encoding is better visual quality for each video, lower user bandwidth, less rebuffering, and faster startup times.

Instant Per Title Encoding is currently available in Early Access by setting an API parameter on asset creation. Over the next few months, as per-title encoding moves out of early access, we will begin to encode every video using this approach automatically.

1. Enabling Instant Per-Title Encoding

During the Early Access period, you can turn on Instant Per Title Encoding by passing "per_title_encode" = true to the Mux Video API when you upload a new video. For example:

curl https://api.mux.com/video/v1/assets \
  -H "Content-Type: application/json" \
  -X POST \
  -d '{ "input": "{INPUT_URL}", "playback_policy": "public", "per_title_encode" : true }' \
  -u {ACCESS_TOKEN}:{SECRET_KEY} | json_pp
<!-- POST to https://api.mux.com/video/v1/assets -->
{
  "input": "https://example.com/myVideo.mp4",
  "per_title_encode" : true,
  "playback_policy": [
    "public"
  ]
}

Currently, this adds about 30 seconds of upload processing time to each new asset, so be aware of the quality vs. time tradeoff. As we continue to optimize the feature, we expect this additional time will disappear.

2. Seeing if an asset is per-title encoded

After an asset is created, the Asset object includes per_title_encode as a boolean parameter that tells whether or not the title is per-title encoded. For example:

{
  "id": "123456789012345678",
  "created_at": 1506642742,
  "status": "ready",
  "duration": 120.000,
  "max_stored_resolution": "HD",
  "max_stored_frame_rate": 30.000,
  "aspect_ratio": "16:9",
  "per_title_encode" : true,
  ...
}

3. Playing back a per-title-encoded asset

That's it - per-title-encoded assets play back just like any other video asset, and the HLS manifest will automatically use the ideal resolution/bitrate ladder for the particular asset. Nothing else needs to be done.

Updated 2 years ago

Per-Title Encoding


Suggested Edits are limited on API Reference Pages

You can only suggest edits to Markdown body content, but not to the API spec.