Cloud Transcoder

🚧

Limited Availability

This feature is currently in the Limited Availability phase. If you would like to try the feature, please contact your Dolby account executive or the support team.

The cloud transcoder offered by the Dolby.io Streaming platform is responsible for ingesting and encoding streams through SRT or RTMP to turn contribution feeds into adaptive-bitrate (ABR) renditions for WebRTC delivery. This allows adjusting the compression level, resolution, and quality of a video stream to match bandwidth availability and improve the viewing experience. The adaptability ensures smoother playback but also conserves bandwidth, making the cloud transcoder an efficient and cost-effective solution optimized for ultra-low latency during the encoding process.

The transcoder allows ingesting B-frames and reducing the amount of data required for transmission. It also supports H.264 and H.265 ingest codecs and seamless conversion to H.264.

❗️

Note

This feature is unavailable in the Free billing plan. To upgrade your current plan, navigate to the Billing tab in the dashboard and select any paid plan.

Transcoder statuses

Each transcoder has a state that depends on the performed asynchronous operations, such as creating, starting, stopping, or deleting. A disabled transcoder has the Shutdown status. Starting a transcoder for the first time results in the Provisioning status that changes to Active after about a minute. The following diagram shows the possible status changes:

Parameters

You can create a transcoder for each video stream and set specific video quality requirements using the following parameters:

  • Height: The height of output video frames that defines video resolution, in pixels.
  • Frame rate: The frame rate of a video stream, which has to match your input frame rate, in frames per second.
  • Passthrough: A boolean indicating whether the top layer of a video stream should be passed through (true) or transcoded (false). To maintain compatibility with WebRTC standards, set this parameter to true only when each Group of Pictures (GOP) in the top layer has a duration of 2 seconds.
  • Cluster: A region to which a transcoder should be deployed.

The Streaming platform automatically selects default video quality ladders based on the provided height and frame rate of the top layer of your output. Alternatively, if the default ladders do not suit you, you can set your preferences using the profile parameter that allows selecting a specific profile. If you decide to set specific profiles, do not set height, frame rate, or passthrough.

When using a transcoder with passthrough enabled, the maximum video resolution is 4k. When passthrough is disabled, the Streaming platform supports a maximum of 1080p resolution and 60 frames per second.

Starting and managing the cloud transcoder

The platform offers the Transcoder APIs for managing cloud transcoders. To create a dedicated transcoder, follow these steps:

  1. Call the Add Webhook API with the isTranscoderHooks parameter set to true. This way, you will be notified about status changes of your transcoder.

  2. Call the Create Transcoder API providing values of all the required parameters. If you want to start your transcoder immediately after its creation, set the startNow parameter to true. Otherwise, call the Start Transcoder API to start the created transcoder.

    An example of the create request:

    {
    "startNow": true,
    "passThrough": false,
    "name": "my example cloud transcoder",
    "dnsPrefix": "example",
    "cluster": "iad-1",
    "height": 1080,
    "frameRate": 60,
    "profile": null
    }
    

    A successful response contains the Provisioning status that changes to Active after about a minute:

    {
        "status": "success",
        "data": {
            "transcoderId": "1c649c88-d1cb-4891-bca7-8e07d2604a39",
            "accountId": 105881,
            "name": "my example cloud transcoder",
            "cluster": "iad-1",
            "dnsName": "example-accountId.transcoder.millicast.com",
            "profile": "1080p 60fps h264 no passthrough",
            "passThrough": false,
            "createdOn": "2024-02-19T12:31:35Z",
            "instance": {
                "instanceId": "08d4a61b-3ad5-475f-ace1-dc16bc848dd9",
                "dnsName": "example-accountId.transcoder.millicast.com",
                "createdOn": "2024-02-19T12:31:50Z",
                "status": "Provisioning"
            },
            "status": "Provisioning",
            "publishUrls": {
                "rtmp": "rtmp://example-accountId.transcoder.millicast.com:1935/v2/pub",
                "rtmps": "rtmps://example-accountId.transcoder.millicast.com:443/v2/pub",
                "srt": "srt://example-accountId.transcoder.millicast.com:10000"
            }
        }
    }
    
    {
        "status": "success",
        "data": {
            "transcoderId": "1c649c88-d1cb-4891-bca7-8e07d2604a39",
            "accountId": 105881,
            "name": "my example cloud transcoder",
            "cluster": "iad-1",
            "dnsName": "example-accountId.transcoder.millicast.com",
            "profile": "1080p 60fps h264 no passthrough",
            "passThrough": false,
            "createdOn": "2024-02-19T12:31:35Z",
            "instance": {
                "instanceId": "08d4a61b-3ad5-475f-ace1-dc16bc848dd9",
                "dnsName": "example-accountId.transcoder.millicast.com",
                "createdOn": "2024-02-19T12:31:50Z",
                "status": "Provisioning"
            },
            "status": "Active",
            "publishUrls": {
                "rtmp": "rtmp://example-accountId.transcoder.millicast.com:1935/v2/pub",
                "rtmps": "rtmps://example-accountId.transcoder.millicast.com:443/v2/pub",
                "srt": "srt://example-accountId.transcoder.millicast.com:10000"
            }
        }
    }
    

    Notice that the response body contains publish URLs required for publishing your stream.

  3. Construct a complete publish URL endpoint by adding your stream ID and publish token at the end of the received publish URLs. In the case of RTMP and RTMPS, you can pass your token as a string. SRT requires encoding the token and providing it as Base64-encoded data. For more information, see the SRT document.

    Examples:

    • rtmp://example-accountId.transcoder.millicast.com:1935/v2/pub/streamName?token=publishToken
    • rtmps://example-accountId.transcoder.millicast.com:443/v2/pub/streamName?token=publishToken
    • srt://example-accountId.transcoder.millicast.com:10000?streamid=streamName?token=encodedPublishToken

The platform also offers the Configure Transcoder API for updating transcoder settings and the Stop Transcoder and Delete Transcoder API for stopping and deleting a specific transcoder. A list of all available Transcoder APIs is available in the REST API documentation.

Impact on other features

The Dolby.io Streaming platform allows using cloud transcoders with all other features, even with Multi-view and Redundant Ingest. However, publishing redundant feeds requires streaming feeds into two transcoders.

When using transcoding with recording, the platform records only the top layer.