Download OpenAPI specification:Download
The M2A Live service provides an API for creating and managing the resources required to deliver a live streaming video workflow on top of the AWS media services suite, including AWS MediaLive. In this version, the following resources are supported:
New in version v3
Encoders accept many configuration options in order to control how media should be interpreted from a source stream, transcoded to its desired representation and the manner in which it should be forwarded onto its destination.
To make full use of the underlying capabilities of AWS MediaLive the M2A Live Encoder Configuration service exists alongside M2A Live. The configuration service allows the configuration of existing encoders to be imported and stored so that it can be later remixed and reused.
To configure an M2A Live encoder, configuration fragments must be first imported into the configuration service. When creating an encoder, these previously imported fragments must be referenced to describe the desired configuration of the new encoder.
Fragments are always referenced by their ID. Each fragment has a type which indicates which aspect of an encoder's configuration it pertains to. The correct type of fragment must be referenced when used in this API. For example, only base
-typed fragments may be used for specifying the base configuration of an M2A Live encoder. For the most part, viable fragment types correspond with the field name in which they are specified under. For example, either selector:audio
orselector:video
fragments are suitable for use with the selector
field of an assembly.
To describe media transformations, sequences of fragment references are arranged into assemblies. Broadly, an assembly describes what media to encode, how to encode it and, where to send it afterwards. One assembly must be specified for each unique path media takes through the encoder pipeline. Meaning that, if there's a single, selected audio track that is to be transcoded into multiple renditions, the same selector fragment would be used referenced by two assemblies.
Assemblies bind configuration fragments to the video sources and destinations which are specified during encoder creation through named references.
For a fuller description of building encoder configurations, including grouping often repeated assemblies into singular sets, consult the M2A Live Encoder Configuration service's documentation.
In the current version, input sources may be a pre-defined M2A Connect source, an RTP stream (with optional FEC), an RTMP push stream or an MP4 file from AWS S3. For M2A Connect sources, this API must be provided with:
As the name suggests, destinations describe the location where encoded media should be sent to. Either as a URL or ARN. Each destination must be given a unique name. These names can then be referenced in each configuration fragment assembly.
If the destination determines where media is sent, the output
fragment of an assembly determines how. As such, it is important to use destinations which correspond to the type of output fragment it is to be bound to. For example, using HTTPS URLs with Smooth streaming outputs and channel ARNs with AWS MediaPackage outputs.
Multiple destinations can be configured to support a resilient packaging cluster. In such a configuration, each destination should be separately bound to identical, yet distinct assemblies.
M2A always strive to maintain backwards compatibility with older API clients as new features are added to our services. If a given API is found to have security or performance issues that are unfixable in a backwards-compatible fashion, then new API versions may be introduced in parallel with the older API, but at a new URL. The old API will continue to be supported for a period of time, but customers will be notified of the API deprecation, and in addition the old API will be modified to begin including Deprecation
response headers. Client software calling the API should watch for these Deprecation headers on responses, and warn the system operator that deprecated APIs are in use -- if a software change is not made to move away from the deprecate API then the client code will eventually stop working.
An encoder represents the specification of the source content, the encoding profile and the destination(s) the encoded content is to be delivered to. A 'success' HTTP status code merely means that the definition has been persisted. An encoder must be started and stopped by the client application based on the required schedule.
organisation-id required | string (Resource identifier) ^[a-zA-Z0-9_-]{8,36}$ Example: 03ac6692-84b9-11ea-b791-5ff49275eb0b The id of the Organisation |
target-account-id required | string (Resource identifier) ^[a-zA-Z0-9_-]{8,36}$ Example: 03ac6692-84b9-11ea-b791-5ff49275eb0b The id of the Target Account |
region required | string (Region) ^[a-z0-9-]+$ Identifier for the region within which the encoding should be executed. This region must be one in which live workflows have been enabled for your organisation. |
type required | string (EncoderType) Value: "medialive" The type of encoder to be used. |
required | object (EncoderMediaLiveSettingsRequest) |
object (StateCallback) | |
required | object (StandardMetadata) |
{- "region": "eu-east-1",
- "type": "medialive",
- "metadata": {
- "labels": [
- {
- "key": "dazn.com:content:oaid",
- "value": "JKGKt56698gjgj"
}, - {
- "key": "dazn.com:content:fixtureid",
- "value": "8sj3yfh37djfdj"
}, - {
- "key": "dazn.com:audience:region",
- "value": "dazn-dach"
}
]
}, - "settings": {
- "configuration": {
- "base": "6e605e66-29b6-4a4a-8f4a-3182873cb5c3",
- "assemblies": [
- {
- "input": "MC_01-A-4jh5g34897f3789rvg",
- "destination": "origin-1",
- "selector": "6e605e66-29b6-4a4a-8f4a-3182873cb5c3",
- "filter": "6e605e66-29b6-4a4a-8f4a-3182873cb5c3",
- "rendition": "6e605e66-29b6-4a4a-8f4a-3182873cb5c3",
- "output": "6e605e66-29b6-4a4a-8f4a-3182873cb5c3"
}, - {
- "input": "MC_01-A-4jh5g34897f3789rvg",
- "destination": "origin-2",
- "selector": "6e605e66-29b6-4a4a-8f4a-3182873cb5c3",
- "rendition": "6e605e66-29b6-4a4a-8f4a-3182873cb5c3",
- "output": "6e605e66-29b6-4a4a-8f4a-3182873cb5c3",
- "failover": "6e605e66-29b6-4a4a-8f4a-3182873cb5c3"
}, - {
- "input": "MC_01-A-4jh5g34897f3789rvg",
- "destination": "origin-1",
- "watermarking_destination": "origin-3",
- "selector": "6e605e66-29b6-4a4a-8f4a-3182873cb5c3",
- "rendition": "6e605e66-29b6-4a4a-8f4a-3182873cb5c3",
- "output": "6e605e66-29b6-4a4a-8f4a-3182873cb5c3"
}, - {
- "input": "MC_01-A-4jh5g34897f3789tkj",
- "destination": "origin-1",
- "set": "6e605e66-29b6-4a4a-8f4a-3182873cb5c3"
}
]
}, - "destinations": [
- {
- "type": "uri",
- "name": "origin-1",
- "settings": "7cd0b667-811e-41d7-8204-682324fa8019"
}, - {
- "type": "channel_id",
- "name": "origin-2",
- "channel-id": "9688316"
}
], - "video-sources": {
- "sources": [
- {
- "type": "CONNECT",
- "name": "MC_01-A-4jh5g34897f3789rvg",
- "class": "SINGLE_PIPELINE",
- "mc-source": "01A",
- "mc-flow-arn": "arn:aws:mediaconnect:eu-west-1:124265833767:flow:1-CFILUAVeWA5cVVIE-e7192b1b93f4:ML_MC_TEST",
- "mode": "primary",
- "failover": "c99eb588-1272-46ea-bc0d-82337cc42c85",
- "source-end-behaviour": "CONTINUE",
- "input-source-type": "STATIC"
}, - {
- "type": "MEDIACONNECT",
- "name": "MC_01-A-4jh5g34897f3789rvg",
- "class": "SINGLE_PIPELINE",
- "mc-source": "01B",
- "mc-flow-arn": "arn:aws:mediaconnect:eu-west-1:124265833767:flow:1-754298758924787248-e7192b1b93f4:ML_MC_TEST",
- "mode": "secondary"
}, - {
- "type": "MP4_FILE",
- "name": "MC_01-A-4jh5g34897f3789tkj",
- "class": "SINGLE_PIPELINE",
- "mode": "primary",
- "input-sources": [
- {
- "url": "source-url",
- "username": "username",
- "password-param": "password-param"
}, - {
- "url": "source-url"
}
]
}
]
}, - "media-live-role-arn": "arn:aws:iam::124265833767:role/MediaLiveAccessRole"
}
}
{- "state": "IN_PROGRESS",
- "id": "03ac6692-84b9-11ea-b791-5ff49275eb0b"
}
Returns a list of the the encoders associated with a target account.
organisation-id required | string (Resource identifier) ^[a-zA-Z0-9_-]{8,36}$ Example: 03ac6692-84b9-11ea-b791-5ff49275eb0b The id of the Organisation |
target-account-id required | string (Resource identifier) ^[a-zA-Z0-9_-]{8,36}$ Example: 03ac6692-84b9-11ea-b791-5ff49275eb0b The id of the Target Account |
page | string Key used to implement pagination. API clients don't need to know key values directly, and can instead rely on the complete URI from the |
filter | string The endpoint supports filtering using the |
[- {
- "id": "6c5d2259-0a55-4d91-a200-b0bc1ebae656",
- "created": "2020-06-01T17:45:00.000000+0000",
- "updated": "2020-06-01T17:45:00.000000+0000",
- "state": "INITIAL",
- "region": "eu-east-1",
- "type": "medialive",
- "settings": {
- "configuration": {
- "base": "6e605e66-29b6-4a4a-8f4a-3182873cb5c3",
- "assemblies": [
- {
- "input": "MC_01-A-4jh5g34897f3789rvg",
- "destination": "origin-1",
- "selector": "6e605e66-29b6-4a4a-8f4a-3182873cb5c3",
- "filter": "6e605e66-29b6-4a4a-8f4a-3182873cb5c3",
- "rendition": "6e605e66-29b6-4a4a-8f4a-3182873cb5c3",
- "output": "6e605e66-29b6-4a4a-8f4a-3182873cb5c3"
}, - {
- "input": "MC_01-A-4jh5g34897f3789rvg",
- "destination": "origin-2",
- "selector": "6e605e66-29b6-4a4a-8f4a-3182873cb5c3",
- "rendition": "6e605e66-29b6-4a4a-8f4a-3182873cb5c3",
- "output": "6e605e66-29b6-4a4a-8f4a-3182873cb5c3",
- "failover": "6e605e66-29b6-4a4a-8f4a-3182873cb5c3"
}, - {
- "input": "MC_01-A-4jh5g34897f3789rvg",
- "destination": "origin-1",
- "watermarking_destination": "origin-3",
- "selector": "6e605e66-29b6-4a4a-8f4a-3182873cb5c3",
- "rendition": "6e605e66-29b6-4a4a-8f4a-3182873cb5c3",
- "output": "6e605e66-29b6-4a4a-8f4a-3182873cb5c3"
}, - {
- "input": "MC_01-A-4jh5g34897f3789tkj",
- "destination": "origin-1",
- "set": "6e605e66-29b6-4a4a-8f4a-3182873cb5c3"
}
]
}, - "channel": {
- "policy": {
- "media-live-role-arn": "arn:aws:iam::124265833767:role/MediaLiveAccessRole"
}, - "aws": {
- "name": "Ch01-6c5d2259-0a55-4d91-a200-b0bc1ebae656",
- "id": "96883162",
- "arn": "arn:aws:medialive:eu-central-1:124265833767:channel:9688316",
- "egress-endpoints": [
- "1.2.3.4"
]
}
}, - "destinations": [
- {
- "type": "uri",
- "id": "origin-1",
- "settings": {
- "fragment": "7cd0b667-811e-41d7-8204-682324fa8019"
}
}, - {
- "type": "channel_id",
- "id": "origin-2",
- "settings": {
- "channel-id": "arn:aws:medialive:eu-central-1:124265833767:channel:9688316"
}
}
], - "video-sources": {
- "sources": [
- {
- "type": "CONNECT",
- "name": "MC_01-A-4jh5g34897f3789rvg",
- "class": "SINGLE_PIPELINE",
- "mc-source": "01A",
- "mc-flow-arn": "arn:aws:mediaconnect:eu-west-1:124265833767:flow:1-CFILUAVeWA5cVVIE-e7192b1b93f4:ML_MC_TEST",
- "state": "ATTACHED",
- "mode": "primary",
- "failover": "c99eb588-1272-46ea-bc0d-82337cc42c85",
- "source-end-behaviour": "CONTINUE",
- "input-source-type": "STATIC",
- "aws": {
- "id": "5555",
- "arn": "arn:aws:medialive:eu-west-1:492798529016:input:5555",
- "name": "MC_01-A-4jh5g34897f3789rvg"
}
}, - {
- "type": "MEDIACONNECT",
- "name": "MC_01-A-4jh5g34897f3789rvg",
- "class": "SINGLE_PIPELINE",
- "mc-source": "01B",
- "mc-flow-arn": "arn:aws:mediaconnect:eu-west-1:124265833767:flow:1-754298758924787248-e7192b1b93f4:ML_MC_TEST",
- "state": "ATTACHED",
- "mode": "secondary",
- "aws": {
- "id": "6666",
- "arn": "arn:aws:medialive:eu-west-1:492798529016:input:6666",
- "name": "MC_01-A-4jh5g34897f3789rvg"
}
}, - {
- "type": "MP4_FILE",
- "name": "MC_01-A-4jh5g34897f3789tkj",
- "class": "SINGLE_PIPELINE",
- "state": "ATTACHED",
- "mode": "primary",
- "input-sources": [
- {
- "url": "source-url",
- "username": "username",
- "password-param": "password-param"
}
], - "aws": {
- "id": "7777",
- "arn": "arn:aws:medialive:eu-west-1:492798529016:input:7777",
- "name": "MC_01-A-4jh5g34897f3789tkj"
}
}
]
}
}, - "metadata": {
- "labels": [
- {
- "key": "dazn.com:content:oaid",
- "value": "JKGKt56698gjgj"
}, - {
- "key": "dazn.com:content:fixtureid",
- "value": "8sj3yfh37djfdj"
}, - {
- "key": "dazn.com:audience:region",
- "value": "dazn-dach"
}
]
}, - "slate-control": {
- "active": {
- "material-id": "6e605e66-29b6-4a4a-8f4a-3182873cb5c3",
- "since": "2020-06-01T17:45:00.000000+0000"
}, - "enabled": true,
- "pending": {
- "material-id": "6e605e66-29b6-4a4a-8f4a-3182873cb5c3",
- "since": "2020-06-01T17:45:00.000000+0000"
}, - "prepared": {
- "material-id": "6e605e66-29b6-4a4a-8f4a-3182873cb5c3",
- "since": "2020-06-01T17:45:00.000000+0000"
}
}, - "version": "V3"
}
]
Gets an encoder by its ID
organisation-id required | string (Resource identifier) ^[a-zA-Z0-9_-]{8,36}$ Example: 03ac6692-84b9-11ea-b791-5ff49275eb0b The id of the Organisation |
target-account-id required | string (Resource identifier) ^[a-zA-Z0-9_-]{8,36}$ Example: 03ac6692-84b9-11ea-b791-5ff49275eb0b The id of the Target Account |
encoder-id required | string (Resource identifier) ^[a-zA-Z0-9_-]{8,36}$ Example: 03ac6692-84b9-11ea-b791-5ff49275eb0b The id of the encoder |
{- "id": "6c5d2259-0a55-4d91-a200-b0bc1ebae656",
- "created": "2020-06-01T17:45:00.000000+0000",
- "updated": "2020-06-01T17:45:00.000000+0000",
- "state": "INITIAL",
- "region": "eu-east-1",
- "type": "medialive",
- "settings": {
- "configuration": {
- "base": "6e605e66-29b6-4a4a-8f4a-3182873cb5c3",
- "assemblies": [
- {
- "input": "MC_01-A-4jh5g34897f3789rvg",
- "destination": "origin-1",
- "selector": "6e605e66-29b6-4a4a-8f4a-3182873cb5c3",
- "filter": "6e605e66-29b6-4a4a-8f4a-3182873cb5c3",
- "rendition": "6e605e66-29b6-4a4a-8f4a-3182873cb5c3",
- "output": "6e605e66-29b6-4a4a-8f4a-3182873cb5c3"
}, - {
- "input": "MC_01-A-4jh5g34897f3789rvg",
- "destination": "origin-2",
- "selector": "6e605e66-29b6-4a4a-8f4a-3182873cb5c3",
- "rendition": "6e605e66-29b6-4a4a-8f4a-3182873cb5c3",
- "output": "6e605e66-29b6-4a4a-8f4a-3182873cb5c3",
- "failover": "6e605e66-29b6-4a4a-8f4a-3182873cb5c3"
}, - {
- "input": "MC_01-A-4jh5g34897f3789rvg",
- "destination": "origin-1",
- "watermarking_destination": "origin-3",
- "selector": "6e605e66-29b6-4a4a-8f4a-3182873cb5c3",
- "rendition": "6e605e66-29b6-4a4a-8f4a-3182873cb5c3",
- "output": "6e605e66-29b6-4a4a-8f4a-3182873cb5c3"
}, - {
- "input": "MC_01-A-4jh5g34897f3789tkj",
- "destination": "origin-1",
- "set": "6e605e66-29b6-4a4a-8f4a-3182873cb5c3"
}
]
}, - "channel": {
- "policy": {
- "media-live-role-arn": "arn:aws:iam::124265833767:role/MediaLiveAccessRole"
}, - "aws": {
- "name": "Ch01-6c5d2259-0a55-4d91-a200-b0bc1ebae656",
- "id": "96883162",
- "arn": "arn:aws:medialive:eu-central-1:124265833767:channel:9688316",
- "egress-endpoints": [
- "1.2.3.4"
]
}
}, - "destinations": [
- {
- "type": "uri",
- "id": "origin-1",
- "settings": {
- "fragment": "7cd0b667-811e-41d7-8204-682324fa8019"
}
}, - {
- "type": "channel_id",
- "id": "origin-2",
- "settings": {
- "channel-id": "arn:aws:medialive:eu-central-1:124265833767:channel:9688316"
}
}
], - "video-sources": {
- "sources": [
- {
- "type": "CONNECT",
- "name": "MC_01-A-4jh5g34897f3789rvg",
- "class": "SINGLE_PIPELINE",
- "mc-source": "01A",
- "mc-flow-arn": "arn:aws:mediaconnect:eu-west-1:124265833767:flow:1-CFILUAVeWA5cVVIE-e7192b1b93f4:ML_MC_TEST",
- "state": "ATTACHED",
- "mode": "primary",
- "failover": "c99eb588-1272-46ea-bc0d-82337cc42c85",
- "source-end-behaviour": "CONTINUE",
- "input-source-type": "STATIC",
- "aws": {
- "id": "5555",
- "arn": "arn:aws:medialive:eu-west-1:492798529016:input:5555",
- "name": "MC_01-A-4jh5g34897f3789rvg"
}
}, - {
- "type": "MEDIACONNECT",
- "name": "MC_01-A-4jh5g34897f3789rvg",
- "class": "SINGLE_PIPELINE",
- "mc-source": "01B",
- "mc-flow-arn": "arn:aws:mediaconnect:eu-west-1:124265833767:flow:1-754298758924787248-e7192b1b93f4:ML_MC_TEST",
- "state": "ATTACHED",
- "mode": "secondary",
- "aws": {
- "id": "6666",
- "arn": "arn:aws:medialive:eu-west-1:492798529016:input:6666",
- "name": "MC_01-A-4jh5g34897f3789rvg"
}
}, - {
- "type": "MP4_FILE",
- "name": "MC_01-A-4jh5g34897f3789tkj",
- "class": "SINGLE_PIPELINE",
- "state": "ATTACHED",
- "mode": "primary",
- "input-sources": [
- {
- "url": "source-url",
- "username": "username",
- "password-param": "password-param"
}
], - "aws": {
- "id": "7777",
- "arn": "arn:aws:medialive:eu-west-1:492798529016:input:7777",
- "name": "MC_01-A-4jh5g34897f3789tkj"
}
}
]
}
}, - "metadata": {
- "labels": [
- {
- "key": "dazn.com:content:oaid",
- "value": "JKGKt56698gjgj"
}, - {
- "key": "dazn.com:content:fixtureid",
- "value": "8sj3yfh37djfdj"
}, - {
- "key": "dazn.com:audience:region",
- "value": "dazn-dach"
}
]
}, - "slate-control": {
- "active": {
- "material-id": "6e605e66-29b6-4a4a-8f4a-3182873cb5c3",
- "since": "2020-06-01T17:45:00.000000+0000"
}, - "enabled": true,
- "pending": {
- "material-id": "6e605e66-29b6-4a4a-8f4a-3182873cb5c3",
- "since": "2020-06-01T17:45:00.000000+0000"
}, - "prepared": {
- "material-id": "6e605e66-29b6-4a4a-8f4a-3182873cb5c3",
- "since": "2020-06-01T17:45:00.000000+0000"
}
}, - "version": "V3"
}
Create an action on an encoder
organisation-id required | string (Resource identifier) ^[a-zA-Z0-9_-]{8,36}$ Example: 03ac6692-84b9-11ea-b791-5ff49275eb0b The id of the Organisation |
target-account-id required | string (Resource identifier) ^[a-zA-Z0-9_-]{8,36}$ Example: 03ac6692-84b9-11ea-b791-5ff49275eb0b The id of the Target Account |
encoder-id required | string (Resource identifier) ^[a-zA-Z0-9_-]{8,36}$ Example: 03ac6692-84b9-11ea-b791-5ff49275eb0b The id of the encoder |
Action to create
action-type required | string (Encoder Actions) Enum: "CREATE" "START_PAUSED" "START" "STOP" "RESTART" "PAUSE" "RESUME" "END" "DELETE" |
{- "action-type": "CREATE"
}
{- "encoder-key": "string",
- "created": "2020-06-01T17:45:00.000000+0000",
- "updated": "2020-06-01T17:45:00.000000+0000",
- "status": "ACTIVE",
- "action-type": "CREATE",
- "material-id": null,
- "slate-action-type": null,
- "slate-datetime": null
}
Get a list of actions. Will return all actions, including completed.
organisation-id required | string (Resource identifier) ^[a-zA-Z0-9_-]{8,36}$ Example: 03ac6692-84b9-11ea-b791-5ff49275eb0b The id of the Organisation |
target-account-id required | string (Resource identifier) ^[a-zA-Z0-9_-]{8,36}$ Example: 03ac6692-84b9-11ea-b791-5ff49275eb0b The id of the Target Account |
encoder-id required | string (Resource identifier) ^[a-zA-Z0-9_-]{8,36}$ Example: 03ac6692-84b9-11ea-b791-5ff49275eb0b The id of the encoder |
[- {
- "encoder-key": "string",
- "created": "2020-06-01T17:45:00.000000+0000",
- "updated": "2020-06-01T17:45:00.000000+0000",
- "status": "ACTIVE",
- "action-type": "CREATE",
- "material-id": null,
- "slate-action-type": null,
- "slate-datetime": null
}, - {
- "encoder-key": "string",
- "created": "2020-06-01T17:45:00.000000+0000",
- "updated": "2020-06-01T17:45:00.000000+0000",
- "status": "ACTIVE",
- "action-type": "PREPARE_SLATE",
- "material-id": "68a6d504-47e2-46ed-a039-f0aa9f9d96cb",
- "slate-action-type": "IMMEDIATE",
- "slate-datetime": null
}, - {
- "encoder-key": "string",
- "created": "2020-06-01T17:45:00.000000+0000",
- "updated": "2020-06-01T17:45:00.000000+0000",
- "status": "ACTIVE",
- "action-type": "PREPARE_SLATE",
- "material-id": "68a6d504-47e2-46ed-a039-f0aa9f9d96cb",
- "slate-action-type": "FIXED",
- "slate-datetime": "2050-09-06T08:14:30.400000+00:00"
}
]
Get encoder-action
organisation-id required | string (Resource identifier) ^[a-zA-Z0-9_-]{8,36}$ Example: 03ac6692-84b9-11ea-b791-5ff49275eb0b The id of the Organisation |
target-account-id required | string (Resource identifier) ^[a-zA-Z0-9_-]{8,36}$ Example: 03ac6692-84b9-11ea-b791-5ff49275eb0b The id of the Target Account |
encoder-id required | string (Resource identifier) ^[a-zA-Z0-9_-]{8,36}$ Example: 03ac6692-84b9-11ea-b791-5ff49275eb0b The id of the encoder |
action-id required | string (Resource identifier) ^[a-zA-Z0-9_-]{8,36}$ Example: 03ac6692-84b9-11ea-b791-5ff49275eb0b The id of the action |
{- "encoder-key": "string",
- "created": "2020-06-01T17:45:00.000000+0000",
- "updated": "2020-06-01T17:45:00.000000+0000",
- "status": "ACTIVE",
- "action-type": "CREATE",
- "material-id": null,
- "slate-action-type": null,
- "slate-datetime": null
}