Contribute a live signal to MediaCopilot Live
Available in: UI · API
Use this how-to to push the HLS output of a running Live stream to MediaCopilot in real time. The contribution lands on the MediaCopilot side as a live asset that the tenant's live-processing pipelines (transcription, subtitling, metadata enrichment) can run against.
When to use this
When the live broadcast must reach MediaCopilot in real time — for live transcription, live subtitling, live metadata enrichment or any MediaCopilot Live processing pipeline that operates on a running feed. For post-broadcast clip hand-off from a finished Recording, use the Editor → MediaCopilot export flow instead.
Prerequisites
- A MediaCopilot account contracted through Cires21. MediaCopilot is a Cires21 product contracted separately; C21 Live Control does not provision it. The account, its tenant URL and the API key Live Control needs are issued by Cires21 as part of the service contract. See MediaCopilot integration for the account model.
- The MediaCopilot integration configured in Live Control. A System Administrator one-time setup under Integrations → MediaCopilot: paste the API key and (when Cires21 issues a customer-specific tenant) override the URL. Save.
- A per-Destination credential pair issued by MediaCopilot — an Access Key ID and a Secret Access Key. These are distinct from the tenant API key and are used by the Live Control encoder when it pushes the HLS feed to the MediaCopilot ingest. Obtain the pair from your MediaCopilot tenant.
- A configured Live stream that can be bound to the new Destination. The bound Channel must produce a feed that complies with the MediaCopilot HLS constraints documented below.
- Required role. System Administrator to register the Destination and the integration; Operator (or System Administrator) to bind it to a Live stream and run the broadcast.
This flow does not require the C21LiveEditor license — that license only gates the post-stream Editor / VOD path. Live contribution runs from any Live Control instance that has a valid product license.
Constraints to be aware of
The MediaCopilot Live path uses an HLS / TS Destination with provider-specific behaviour. The UI enforces and the encoder respects:
- Type = HLS / TS and Provider = MediaCopilot are the only valid combination. The provider's
notForlist inpublishingProvidersexcludes every other Destination type (DASH, CMAF, RTMP, Enhanced RTMP, SRT, STREAM). The combo selector in the Destination editor hides the MediaCopilot option when any other type is selected. - Subtitles are not delivered. When the bound Live stream is configured with subtitle tracks, the broadcast publishing config surfaces "Subtitles not supported for MediaCopilot"; the subtitle selector is disabled for this Destination and any previously selected subtitle tracks are cleared on save.
- At most one audio track is delivered. When the Live stream's source carries multiple audio tracks, the broadcast publishing config surfaces "Only one audio track is allowed for MediaCopilot" and accepts a single track selection. Picking a second track is rejected by the UI.
- The Destination editor's standard Username / Password fields are relabelled to Access Key ID / Secret Access Key when Provider = MediaCopilot and Type = HLS / TS. The values are stored encrypted at rest and never returned in the clear (reads echo the masked sentinel).
Via UI
Configure the MediaCopilot integration (one-time)
Navigate: Integrations → MediaCopilot (System Administrator).
| UI label | What to fill |
|---|---|
| API Key | The MediaCopilot API key issued by Cires21. |
| URL | The MediaCopilot tenant URL. Leave blank to use the default tenant; override when Cires21 issues a customer-specific tenant. |
| API URL | The MediaCopilot API URL (when Cires21 issues a customer-specific value). |
Click Save. A success toast confirms "MediaCopilot configuration saved". The status indicator next to the legend reads Configured.
Create the Destination
Navigate: Destinations → Add destination.
| UI label | API field | Value |
|---|---|---|
| Name | name | A stable identifier reused across the UI, API and logs (e.g. MediaCopilot Live — Studio A). |
| Type | type | HLS / TS. |
| Provider | settings_common.provider | MediaCopilot. |
| Stream | settings_common.stream | The MediaCopilot stream name the tenant expects. |
| Access Key ID | settings_common.username | The Access Key ID from the MediaCopilot tenant. |
| Secret Access Key | settings_common.password | The matching secret. Stored encrypted; redacted on subsequent reads. |
Under Settings → Extra → HLS, set the settings_extra.hls.* knobs (segments, duration and the rest of the HLS family) per your MediaCopilot ingest's expectations.
Save the form.
Bind the Destination to a Live stream
Open the target Live stream in the Live streams editor. Add the new Destination under Destinations (or add a Destination group that contains it).
In the broadcast publishing config for the MediaCopilot row:
- If the bound Channel carries multiple audio tracks, the selector narrows to a single choice with the message "Only one audio track is allowed for MediaCopilot". Pick the track to deliver.
- If the bound Channel carries subtitle tracks, the subtitle selector is disabled with the inline tooltip "Subtitles not supported for MediaCopilot".
Save the Live stream.
Start the Live stream
Start the broadcast from On air or the Live stream detail. The dialog reads "Do you want to start this Live stream?"; the primary action is Start Live stream. See Start and stop a Live stream.
The MediaCopilot Destination turns active on the per-Destination indicator of the on-air row. The live feed is contributed to MediaCopilot in real time; the asset appears on the MediaCopilot side under the tenant's live-assets view.
Via API
Every call uses the standard bearer header Authorization: Bearer <YOUR_API_TOKEN>.
Configure the integration
| Action | Method + path | Notes |
|---|---|---|
| Update the MediaCopilot integration | PUT /c21apiv2/system/mediacopilot | Persists apiKey, url and apiUrl. The aliased path /c21apiv2/settings/integrations/mediacopilot resolves to the same handler. System Administrator only. |
curl -X PUT "https://<your-host>/c21apiv2/system/mediacopilot" \
-H "Authorization: Bearer <YOUR_API_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"apiKey": "<MediaCopilot API key>",
"url": "<optional tenant URL override>",
"apiUrl": "<optional API URL override>"
}'
apiKey reads echo a bullet sentinel (••••••••) — repeating the sentinel on write preserves the stored key.
Create the Destination
| Action | Method + path | operationId |
|---|---|---|
| Create a Destination | POST /c21apiv2/publishings | addPublishing |
curl -X POST "https://<your-host>/c21apiv2/publishings" \
-H "Authorization: Bearer <YOUR_API_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"name": "MediaCopilot Live — Studio A",
"type": "HLS / TS",
"settings_common": {
"provider": "MediaCopilot",
"stream": "<tenant stream name>",
"username": "<Access Key ID>",
"password": "<Secret Access Key>"
},
"settings_extra": {
"hls": { "segments": 6, "duration": 4 }
}
}'
settings_common.username and settings_common.password are the API field names; the UI relabels them Access Key ID / Secret Access Key only when provider = MediaCopilot and type = HLS / TS. The wire shape is unchanged.
Bind the Destination to a Live stream
| Action | Method + path | operationId |
|---|---|---|
| Update a Live stream | PUT /c21apiv2/livestreams/{livestreamId} | updateLivestream |
Add the Destination to the Live stream's bound Destinations (alongside any other Destinations the stream already publishes to). See the LiveStream schema for the payload shape.
Start and stop the broadcast
| Action | Method + path | operationId |
|---|---|---|
| Start the Live stream | POST /c21apiv2/livestreams/{livestreamId}/start | startLivestream |
| Stop the Live stream | POST /c21apiv2/livestreams/{livestreamId}/stop | stopLivestream |
See API → Overview for the standard envelope and Pagination and errors for error handling.
Verify
- The Destination turns active on the per-Destination indicator of the Live stream's row on On air.
- On the MediaCopilot side, the live asset appears under the tenant's live-assets view within the time the MediaCopilot ingest takes to surface a newly-arriving HLS feed.
- The audio track selected on the broadcast publishing config matches the audio track MediaCopilot exposes on the live asset.
- No subtitle tracks are delivered to MediaCopilot regardless of what the bound Channel carries.
- When the Live stream is stopped, the Live Control side simply stops pushing; the MediaCopilot live asset closes on its own contract.
Troubleshooting
- Destination won't save with MediaCopilot selected. Verify Type is HLS / TS. The provider's
notForrule prevents saves on any other Destination type. - Subtitle or multi-audio errors at Live stream save. Open the broadcast publishing config for the MediaCopilot Destination, clear any subtitle selections and narrow audio to one track. The constraints are enforced at save time.
- Authentication failures on the MediaCopilot side at start. Verify the Access Key ID and Secret Access Key on the Destination match what the MediaCopilot tenant issued. The values are stored encrypted; if a value is in doubt, re-paste from the tenant.
- Tenant unreachable. Confirm the Live Control instance can reach the configured tenant URL. The Integrations → MediaCopilot page shows the status as Configured or Not configured next to the legend; a Configured status only means the API key is stored, not that the tenant is currently reachable.
FAQ
C21LiveEditor license. The MediaCopilot Live contribution flow documented here pushes the running HLS feed to MediaCopilot in real time as a live asset and does not require the C21LiveEditor license — only the MediaCopilot account contracted through Cires21 and the MediaCopilot integration configured in Live Control.