This documentation is intended for programmers who are writing client or server applications that interact with MMD Live Recording Schedules and Slots.
API Overview
Resources about the above bullet points are described further in Data Resources.
Data Resources
The MMD Live APIs use four Data Resource objects. The method definitions using the Data Resources are defined in API Requests - Query, API Requests - Create and Update, and API Requests - Delete.
Recording Schedule
Property Name | Required On Create? | Updatable? | Type | Description |
---|---|---|---|---|
id | No Automatically set | No | String | A unique ID is assigned to the Recording Schedule. |
name | Yes | No | String | Recording Schedule name. There is no restriction on the number and type of characters. Duplicate schedule names are allowed. Required when updating a schedule. |
start | Yes | No | ISO8601 formatted date string without timezone | Desired Recording Schedule start date and time. Required when updating a schedule. |
recurrenceType | Yes | Yes | String | Type of Recording Schedule. One of: - ONCE - DAILY - WEEKLY - MONTHLY |
slotId | Yes | No | String | The ID of the slot to contain the Recording Schedule. Required when updating a schedule. |
allRenditions | No | No | boolean | Whether to record all bitrates of your videotrue : record all bitrates (default)false : don’t record all bitratesRequired when updating a schedule. |
duration | Yes | Yes | ISO8601 interval format string | Recording duration. Default: PT4H Required when updating a schedule. |
segmentDuration | Yes | Yes | ISO8601 interval format string | Segment duration. Default: PT4H Required when updating a schedule. |
timezone | Yes | Yes | timezone locality string | Timezone and sub-timezone in which recording should occur. |
enabled | No | No, if set to false | boolean | Determines whether the schedule is enabled for recording. |
recordingStatus | No Automatically set | No | String | Possible values: - SCHEDULED - RECORDING - CANCELLING - FINISHED |
callbackUrl | No | Yes | String | URL of your choice to which to post the recording status. |
Slot Streaming Status
The MMD Live API does not support the creation or updating of slot streaming status.
Property Name | Required On Create? | Updatable? | Type | Description |
---|---|---|---|---|
id | n/a | n/a | String | Slot ID. Use this as the ID of the slot to contain the Recording Schedule. |
status | n/a | n/a | String | Slot streaming status. One of:active : slot is streaminginactive : slot is not streaming |
Slot
Property Name | Required On Create? | Updatable? | Type | Description |
---|---|---|---|---|
id | n/a | n/a | String | The Slot ID is the unique identifier assigned to the slot upon slot creation. In this version of the API, the Slot ID is the same as the stream name used in encoders. |
type | yes | n/a | String | Type of slot. One of: - 576 - 720 - 1080 - transmux |
name | yes | n/a | String | Note: This name is NOT the stream name used by encoders. |
state | n/a | n/a | String | State of the slot. One of: - Pending - Ready - Failed |
publishUrls | n/a | n/a | Object | Publish URLs associated with the slot. Each object contains these String properties: - primary : primary publish URL- backup : backup publish URL |
playbackInfo | n/a | n/a | Object | Playback URLs for the various output types. Each object contains these String properties: - dash : playback URL for DASH output- hls : playback URL for HLS output- hds : playback URL for HDS output- rtmp : List of playback URLs for RTMP output |
mediaVaultType | no | n/a | String | Type of MediaVault protection. One of: - NONE (default)- COOKIE - URL - URL_WITH_SUB_MANIFESTS |
mediaVaultSecretKey | no | n/a | String | MediaVault secret key known only to the customer and Edgio. Null if MediaVault is not configured for the slot |
region | yes | n/a | String | The region in which to publish. Possible values: - north-america - europe - asia-pacific |
profiles | yes | n/a | An array of Profile objects | See Profile. |
shortname | n/a | n/a | String | The account shortname for the slot. |
streamName | n/a | n/a | String | The stream name used in encoders. The streamName format must match related regex format. For example: ^[A-Za-z]``[A-Za-z0-9-] |
primaryPop | no | n/a | String | The preferred POP for the primary ingest. Defaults to auto-selection based on region. |
backupPop | n/a | n/a | String | The preferred POP for the backup ingest. Defaults to auto-selection based on region. |
username | yes, if the password is specified | n/a | String | The user name for publishing to the slot. Default credentials will be those configured for the account. |
password | yes, if the username is specified | n/a | String | The password for publishing to the slot. Default credentials will be those configured for the account. |
drmType | no | n/a | String | Currently a non-functioning field |
offsetTimecodes | no | n/a | Boolean | Determines whether the service should override published packet timecodes. Required if the encoder is not using synchronized absolute timecodes. Default is true . |
subtitlesEnabled | no | n/a | Boolean | Determines whether a subtitles reference is included in the HLS manifest. Default is true . |
useBackup | no | n/a | Boolean | Determines whether to allocate a backup ingest. Default is false . |
callbackUrl | no | n/a | String | HTTP URL that will receive POST requests for stream events. |
outputFormats | yes | n/a | Array of Strings | The output formats to enable for this slot. Can be any of: - hls - dash - hds - mss - rtmp |
ipGeoMatch | no | n/a | String | When creating a slot: -Pass null if you do not want to use IP/Geo access. -Otherwise, pass a comma-delimited list of 2-character country codes where playback is allowed or denied. Use ”-” (without quotes) before a geocode to indicate denial. Examples: -fr: allow France only -fr,all: allow all countries except France -If you use all, it must appear at the end of the list. Contact your Account Manager if you need assistance with IP geocodes. |
Profile
A Profile object specifies the audio and video rendition(s) configured for a slot.
Property Name | Required On Create? | Updatable? | Type | Description |
---|---|---|---|---|
id | yes, if slot type is not transmux | n/a | String | The ID of a predefined transcode profile. |
name | n/a | n/a | String | Name of profile. |
videoBitrate | yes, if the Slot type is transmux | n/a | Number | Profile’s video bitrate in bits/second. |
audioBitrate | yes, if the Slot type is transmux | n/a | Number | Profile’s audio bitrate in bits/second. |
videoWidth | yes, if the Slot type is transmux | n/a | Number | Profile’s video width. |
videoHeight | yes, if the Slot type is transmux | n/a | Number | Profile’s video height. |
Overview
An Overview object provides usage statistics for an MMD Live account.
Property Name | Required On Create? | Updatable? | Type | Description |
---|---|---|---|---|
transmuxTotal | n/a | n/a | Integer | The total allowed number of transmux slots. |
transmuxAvailable | n/a | n/a | Integer | The number of available transmux slots. |
576Total | n/a | n/a | Integer | The total allowed number of 576p slots. |
576Available | n/a | n/a | Integer | The number of available 576p slots. |
720Total | n/a | n/a | Integer | The total allowed number of 720p slots. |
720Available | n/a | n/a | Integer | The number of available 720p slots. |
1080Total | n/a | n/a | Integer | The total allowed number of 1080p slots. |
1080Available | n/a | n/a | Integer | The number of available 1080p slots. |
API Requests - Query
The following methods are available for requesting content information for slots, slot streaming status, and Recording Schedules.
Slots
Get all slots
URL:
https://apis.llnw.com/config-api/v1/
live/shortname/{account name}/slots
Formats:
JSON
HTTP Method:
GET
Requires Authentication: Yes. See Authentication - Signing Requests.
Parameters: None
Response: A list of Slots.
Errors: Invalid value, Missing signature
Get a specific slot
URL:
https://apis.llnw.com/config-api/v1/live/shortname/{account name}/slots/{slot ID}
Formats:
JSON
HTTP Method:
GET
Requires Authentication: Yes. See Authentication - Signing Requests.
Parameters: None
Response: The slot’s Streaming Status below.
Errors: Invalid value, Missing signature
Get the streaming status of a slot
URL:
https://apis.llnw.com/config-api/ v1/live/shortname/{account name}/ slots/{slotId}/status
Formats:
JSON
HTTP Method:
GET
Requires Authentication: Yes. See Authentication - Signing Requests.
Parameters: None
Response: The slot’s Streaming Status.
Errors: Invalid value, Missing signature, The slot does not exist
Get overview information for an account’s slots
URL:
https://apis.llnw.com/config-api/v1/live/shortname/{account name}/overview
Formats:
JSON
HTTP Method:
GET
Requires Authentication: Yes. See Authentication - Signing Requests.
Parameters: None
Response: The account’s slot Overview
Errors: Invalid value, Missing signature
Recording Schedules
Get a recording schedule
URL:
https://apis.llnw.com/config-api/v1/live/recording/shortname/{account name}/schedules/{scheduleId}
Formats:
JSON
HTTP Method:
GET
Requires Authentication: Yes. See Authentication - Signing Requests.
Parameters: No payload parameters required
Response: The retrieved Recording Schedule.
Errors: Invalid value, Missing signature, A schedule does not exist
Get all recording schedules
URL:
https://apis.llnw.com/config-api/v1/live/recording/shortname/{account name}/schedules
Formats:
JSON
HTTP Method:
GET
Requires Authentication: Yes. See Authentication - Signing Requests.
Optional Query Parameter:
slotId
: If specified, the system will only return a list of Recording Schedules that are configured for the SlotResponse: A list of the retrieved Recording Schedules.
Errors: - Invalid value
-Missing signature
-Missing signature
API Requests - Create and Update
Slots
The following method is available for creating a slot:
Create a Slot
URL:
https://apis.llnw.com/config-api/v1/live/shortname/{account name}/slots
Formats:
JSON
HTTP Method:
POST
Requires Authentication: Yes. See Authentication - Signing Requests.
Parameters:
Key | Value |
---|---|
backupPop | The preferred POP for the backup ingest. Defaults to auto-selection based on region. Optional String |
callbackUrl | HTTP URL that will receive POST requests for stream events. Optional String |
drmType | Currently a non-functioning field. |
ipGeoMatch | When creating a slot: - Pass null if you do not want to use IP/Geo access. - Otherwise, pass a comma-delimited list of 2-character country codes where playback is allowed or denied. Use - (without quotes) before a geocode to indicate denial. Examples: - fr: allow France only- -fr,all: allow all countries except France If you use all , it must appear at the end of the list. Optional String Contact your Account Manager if you need assistance with IP Geocodes. |
mediaVaultSecretKey | MediaVault secret key known only to the customer and Edgio. Null if MediaVault is not configured for the slot Optional String |
mediaVaultType | Type of MediaVault protection. One of: - NONE (default) - COOKIE - URL - URL_WITH_SUB_MANIFESTS Optional String |
name | Name of the Slot Required String |
offsetTimecodes | Whether the service should override published packet timecodes. Required if the encoder is not using synchronized absolute timecodes. Default is true. Optional Boolean |
outputFormats | The output formats to enable for this slot. Can be any of: - hls - dash - hds - mss - rtmp Required Array of Strings |
password | The password for publishing to the slot. Default credentials will be those configured for the account. Required if a username is specified. String |
primaryPop | The preferred POP for the primary ingest. Defaults to auto-selection based on region. Optional String |
profiles | Profile objects associated with the slot. Required An array of Profile objects. Profiles for transcode slots are identified by profile ID, where each transcode profile type has a specific set of acceptable IDs. See Transcode Slots for a list of types and allowed IDs. Profiles for transmux slots are identified by an object that defines video properties. See Transmux Slots for an explanation of the object. |
region | The region in which to publish. Possible values: - north-america - europe - asia-pacific Required String |
subtitlesEnabled | Determines whether a subtitles reference is included in the HLS manifest. Default is true . Optional Boolean |
type | Type of slot. One of: - 576 (transcode slot) - 720 (transcode slot) - 1080 (transcode slot) - transmux Required String |
useBackup | Whether to allocate a backup ingest. Default is false . Optional Boolean |
username | The user name for publishing to the slot. Default credentials will be those configured for the account. Required if a password is specified. String |
Example Usage
Transcode Slot Example
The following payload will create a 576 transcode slot with all available profiles and HLS and MPEG-DASH output enabled.
1{2 "name": "my-slot",3 "region": "north-america",4 "type": "576",5 "profiles": [6 {"id": "9"},7 {"id": "10"},8 {"id": "8"},9 {"id": "7"},10 {"id": "6"},11 {"id": "3"}12 ],13 "outputFormats": [14 "hls",15 "dash"16 ]17 }
Transmux Slot Example
The following payload creates the same output as the Transcode Slot Example, except only one output is produced.
1{2 "name": "my-slot2",3 "region": "north-america",4 "type": "transmux",5 "profiles": [6 {7 "videoBitrate": 192000,8 "audioBitrate": 4000000,9 "videoWidth": 1920,10 "videoHeight": 108011 }12 ],13 "outputFormats": [14 "hls",15 "dash"16 ]17 }
Response:
The created slot along with the following additional fields:
Key | Value |
---|---|
id | The Slot ID is the unique identifier assigned to the slot upon slot creation. In this version of the API, the Slot ID is the same as the stream name used in encoders. String |
state | State of the slot. One of: - Pending - Ready - Failed String |
publishUrls | Publish URLs associated with the slot. Each object contains these String properties: - primary : primary publish URL - backup backup publish URL Object |
playbackInfo | Playback URLs for the various output types. Each object contains these String properties: - dash : playback URL for DASH output - hls : playback URL for HLS output - hds : playback URL for HDS output - rtmp : List of playback URLs for RTMP output Object |
shortname | The account shortname for the slot. String |
streamName | The stream name used in encoders. The streamName format must match the related regex format. For example: ^[A-Za-z][A-Za-z0-9-] String |
Errors: Invalid value, Missing signature
Recording Schedules
The following methods are available for creating and updating schedules:
Create a recording schedule
URL:
https://apis.llnw.com/config-api/v1/live/recording/shortname/{account name}/schedules
Formats:
JSON
HTTP Method:
POST
Requires Authentication: Yes. See Authentication - Signing Requests.
Parameters:
Key | Value |
---|---|
name | Name of the Recording Schedule String Required |
start | Start time in the specified timezone. ISO8061 formatted date and time string without timezone. Example: 2018-10-01T12:00:00 Required |
duration | Duration of the recording. ISO8601 interval format string. Example: PT4H Required |
segmentDuration | Segment duration of the recording. Use this value to break up recordings into smaller files. String Maximum value: 4 hours ( PT4H ) Example: PT4H Required |
slotId | The ID of the MMD Live Slot to record. String Required |
recurrenceType | Type of Recording Schedule to create. One of: - ONCE - DAILY - WEEKLY - MONTHLY String Required |
allRenditions | Determines whether to record all renditions of a slot. Boolean If false , the system will only record the highest bitrate rendition of the slot. Optional. Default true |
enabled | Determines whether or not the Recording Schedule is enabled. Optional. Default true |
callbackUrl | URL to which the system will make POST requests to at various points in the recording lifecycle. Must be a valid http or https URL String Optional |
timezone | Timezone locality string. The timezone that the system will record is based on the start parameter. Example: America/New_York String Required |
Example:
The following payload will create a schedule that will record all renditions every Friday for 1 hour at noon in the
America/Phoenix
timezone starting on March 1, 2019.1{2 "name": "my-recording-schedule",3 "start": "2019-03-01T12:00:00",4 "recurrenceType": "WEEKLY",5 "slotId": "<slot_id>",6 "allRenditions": true,7 "duration": "PT1H",8 "segmentDuration": "PT1H",9 "timezone": "America/Phoenix",10 "enabled": true,11 "callbackUrl": "http://www.server.com/api/callback"12}
Response: The created Recording Schedule with the following additional fields:
Key | Value |
---|---|
id | String UUID of the recording schedule |
recordingStatus | Status of the recording schedule. One of: - SCHEDULED - RECORDING - CANCELLING - FINISHED |
Errors: Invalid value, Missing signature
Update an existing recording schedule
Changes to a recording schedule, while a recording schedule is recording, may not take effect until the recording’s next occurrence.
URL:
https://apis.llnw.com/config-api/v1/live/recording/shortname/{account name}/schedules/{scheduleId}
Formats:
JSON
HTTP Method:
PUT
Requires Authentication: Yes. See Authentication - Signing Requests.
Updatable Parameters: You can update the following fields only:
start
duration
recurrenceType
enabled
May only be set to false. It cannot be changed to true when it is currently false.callbackUrl
timezone
‘Schedule’ Object Parameter: A complete recording schedule object is required. PATCH requests are not supported.
Key | Value |
---|---|
name | Name of the Recording Schedule String Required |
start | Start time in the specified timezone. ISO8061 formatted date and time string without timezone. Example: 2018-10-01T12:00:00 Required |
duration | Duration of the recording. ISO8601 interval format string. Example: PT4H Required |
segmentDuration | Segment Duration of the recording. Use this value to break up recordings into smaller files. String Maximum value: 4 hours ( PT4H )Example: PT4H Required |
slotId | The ID of the MMD Live Slot to record. String Required |
recurrenceType | Type of Recording Schedule to create. One of: - ONCE - DAILY - WEEKLY - MONTHLY String Required |
allRenditions | Determines whether to record all renditions of a slot. Boolean If false, the system will only record the highest bitrate rendition of the slot. Required |
enabled | Determines whether the Recording Schedule is enabled. Required |
callbackUrl | URL the system will make POST requests to at various points in the recording lifecycle. Must be a valid http or https URL String Optional |
timezone | Timezone locality string. The timezone that the system will record is based on the start parameter. Example: America/New_York String Required |
Response: The updated Recording Schedule.
Errors: Invalid value, Missing signature
API Requests - Delete
Slots
The following method is available for deleting slots:
Delete a slot
URL:
https://apis.llnw.com/config-api/v1/live/shortname/{account name}/slots{slot ID}
Formats:
JSON
HTTP Method:
DELETE
Requires Authentication: Yes. See Authentication - Signing Requests.
Parameters: No payload parameters required
Response: The deleted Recording Schedule.
Errors: Invalid value, Missing signature
Schedules
Delete a recording schedule
The following method is available for deleting schedules:
A Recording Schedule can only be deleted if it is in the
FINISHED
state.A Recording Schedule will be in the
FINISHED
state if:- Its
recurrenceType
isONCE
, and the recording has completed OR - Its enabled field is
false
URL:
https://apis.llnw.com/config-api/v1/live/recording/shortname/{account name}/schedules{scheduleId}
Formats:
JSON
HTTP Method:
DELETE
Requires Authentication: Yes. See Authentication - Signing Requests.
Parameters: No payload parameters required
Response: The updated Recording Schedule.
Errors: Invalid value, Missing signature
Authentication - Signing Release
The Live to VoD APIs use symmetric key cryptography and HMAC (Hashed Message Authentication Code) for message authentication and user identification. To secure all calls to the API, an HMAC digest signature is applied to every request by using the following authentication headers:
X-LLNW-Security-Principal
– Name of the user performing the request. Services lookup shared keys by the username to authenticate a message. Since shared keys are stored on a per-user basis, an attacker would have to know both the username and the shared key for that user to impersonate another user.X-LLNW-Security-Timestamp
– Unix time in milliseconds used to prevent replay attacks. If the timestamp is more than X seconds old (usually 300), the message expires, and an error code is returned. Note: System clock skew minimization is an important consideration for message expiration.X-LLNW-Security-Token
– MAC hash-generated with the user’s shared key. It is calculated based on data that is sent to the server. This token is generated twice, once by the client and once by the server - to compare with the one passed by the client. If the token provided by the client matches the token generated by the server, the message is authentic.The shared key is a large unique key created for use with the
HmacSHA256
MAC algorithm. The Control maintains a unique and enciphered shared key for every user in the system. It is stored in HEX format and should be decoded to ASCII before usage. Users may access or regenerate this key at any time by using tools in the Control under My Settings > Edit My Profile. X-LLNW-Security-Token
is formed by applying MAC digest for the “data string”; i.e. REQUEST_METHOD
+ URL
+ QUERY_STRING
(if present) + TIMESTAMP
+ REQUEST_BODY
(if present)Starting and Stopping Recordings
You can easily start and stop recording.
Start a Recording
To start a recording, you simply create a new recording schedule and set the start attribute to the current time:
POST a payload like the following to the URL in Create a recording schedule:
1{2 "name": "my-recording-schedule",3 "start": "2019-03-01T12:00:00", // it is currently noon on March 1, 20194 "recurrenceType": "ONCE", // it is recommended to use ONCE for a one-time recording5 "slotId": "<slot_id>",6 "timezone": "America/Phoenix",7 "duration": "PT1H",8 "segmentDuration": "PT1H",9 "callbackUrl": "http://www.server.com/api/callback"10}
Stop a Recording
To stop a recording, you update the recording schedule’s enabled field to be false.
PUT a payload like the following to the URL in Update an existing recording schedule:
1{2 "enabled": false3}
The recording will stop immediately and begin post-processing.
Live to VoD Callbacks
Live to VoD provides the ability to monitor the state of your recordings through callbacks. When you create a recording, you can optionally provide a URL to which Live to VoD sends POST requests for these recording stages:
- Recording of a segment1 has started
- The recording has finished, and post-processing has begun
- Recorded files are now available on the customer storage account
1A segment is a single entity of a recording. For example, if a schedule says to record for two hours every Friday, that 2-hour recording will be a segment. Segments have an upper limit of 4 hours. If a schedule says to record for 5 hours every Friday, there will be two segments: one 4-hour segment and one 1-hour segment.
Payload Received in the POST Requests
Callbacks are valid only for one-time and recurring recordings.
The payload contains a recording segment that includes a list of renditions.
Recording Segment Fields
Field | Type | Description |
---|---|---|
id | String | The ID of the recording segment. UUID |
schedule_id | String | The ID of the recording schedule. UUID |
start_time | ISO8601 formatted date string | Start time (UTC) of the recording segment. Example: 2018-01-01T12:00:00Z |
end_time | ISO8601 formatted date string. | End time (UTC) of the recording segment. Example: 2018-01-01T12:00:00Z |
status | String | Status of the recording segment. One of: - RECORDING - PROCESSING - FILES_READY |
renditions | List of Rendition objects | List of the recorded renditions of the recording segment. |
Rendition Object
Field | Type | Description |
---|---|---|
bitrate | String | The bitrate of recorded rendition in kbps. |
path | String | Path to the recorded file on the storage. |
file_size | Long | File size of the recorded file in bytes. |
Response Samples
At various times, callbacks are sent, the payload looks slightly different. For example, when the recording starts and post-processing, the system does not have information about the renditions (as the files have not been fully recorded, converted to mp4, and uploaded). The following sections describe what the payload will look like at the various points.
RECORDING
1{2 "id": "0e73e1f7-86b7-446f-8283-540dcb92bc08",3 "schedule_id": "58a3dc1f-a12d-43e0-bb8e-c57201fd329f",4 "start_time": "2018-10-01T17:00:00Z",5 "end_time": "2018-10-01T18:00:00Z",6 "status": "RECORDING",7 "renditions": []8}
PROCESSING
1{2 "id": "0e73e1f7-86b7-446f-8283-540dcb92bc08",3 "schedule_id": "58a3dc1f-a12d-43e0-bb8e-c57201fd329f",4 "start_time": "2018-10-01T17:00:00Z",5 "end_time": "2018-10-01T18:00:00Z",6 "status": "PROCESSING",7 "renditions": []8}
FILES_READY
1{2 "id": "0e73e1f7-86b7-446f-8283-540dcb92bc08",3 "schedule_id": "58a3dc1f-a12d-43e0-bb8e-c57201fd329f",4 "start_time": "2018-10-01T17:00:00Z",5 "end_time": "2018-10-01T18:00:00Z",6 "status": "FILES_READY",7 "renditions": [8 {9 "bitrate": "1928000",10 "path": "/path_prefix/slot_name/schedule_name/segment_start_time/1928000.mp4",11 "file_size": 1447934012 },13 {14 "bitrate": "1128000",15 "path": "/path_prefix/slot_name/schedule_name/segment_start_time/1128000.mp4",16 "file_size": 780711517 }18 ]19}
MMD Live Callbacks
MMD Live provides the ability to monitor the state of your slots through callbacks. When you create a slot, you can optionally provide a URL to which MMD Live will send POST requests for the following events:
- Provisioning Complete
- Provisioning Error
- Stream Publish
- Stream Unpublish
Payload Received in the POST Requests
Field | Type | Description |
---|---|---|
id | String | The ID of the slot. |
ingest_type | String | Ingest type from which the callback is coming. One of: - primary - backup Included with publish and unpublish events. |
shortname | String | Short name (account name) of the slot. |
stream_name | String | Name of the stream being published/unpublished. Included with publish and unpublish events. |
timestamp | String | The timestamp of the event (UTC). Example: 2020-01-01T12:00:00Z |
type | String | Type of event. One of: - provisioned - failed - publish - unpublish |
Response Samples
Provisioning Complete
1{2 "type":"provisioned",3 "timestamp":"2019-09-11T16:15:46Z",4 "shortname":"mmdstg001",5 "id":"16d3c6ebcf0241e5bc69ea0c9cde352d"6}
Provisioning Error
1{2 "type":"failed",3 "timestamp":"2019-09-12T14:13:19Z",4 "shortname":"mmdstg001",5 "id":"16d3c6ebcf0241e5bc69ea0c9cde352d"6}
Stream Publish
1{2 "type":"publish",3 "timestamp":"2019-09-10T19:53:12Z",4 "shortname":"mmdstg001",5 "id":"cc2857809336451b98f416e933973b2e",6 "stream_name": "cc2857809336451b98f416e933973b2e_4000",7 "ingest_type":"primary"8}
Stream Unpublish
1{2 "type":"unpublish",3 "timestamp":"2019-09-10T19:53:59Z",4 "shortname":"mmdstg001",5 "id":"cc2857809336451b98f416e933973b2e",6 "stream_name": "cc2857809336451b98f416e933973b2e_4000",7 "ingest_type":"primary"8}
MMD Live Profiles
This appendix explains the possible values for the list of profile objects needed when creating a slot.
Transcode Slots
This section defines the IDs used for each transcode profile type (576, 720, 1080) in the list of profile objects required when creating a slot.
The only item required and used in the profile object for transcode slots is the id field.
The order that the profile IDs are defined in the slot creation request dictate the order the various streams are listed in the manifest file when playing back the content.
SD Slot - 576p
ID | Video Stream Resolution and Bitrate | Audio Stream Bitrate |
---|---|---|
3 | 1024x576 at 1.8 mbps | 128 kbps |
6 | 848x480 at 1 mbps | 128 kbps |
7 | 640x360 at 668 kbps | 64 kbps |
8 | 320x180 at 268 kbps | 64 kbps |
9 | 320x180 at 110 kbps | 64 kbps |
10 | Audio only | 64 kbps |
HD Slot - 720p
ID | Video Stream Resolution and Bitrate | Audio Stream Bitrate |
---|---|---|
2 | 1280x720 at 2.4 mbps | 192 kbps |
5 | 1024x576 at 1.8 mbps | 128 kbps |
6 | 848x480 at 1 mbps | 128 kbps |
7 | 640x360 at 668 kbps | 64 kbps |
8 | 320x180 at 268 kbps | 64k bps |
10 | Audio only | 64 kbps |
FHD Slot - 1080p
ID | Video Stream Resolution and Bitrate | Audio Stream Bitrate |
---|---|---|
1 | 1920x1080 at 4mbps | 192 kbps |
4 | 1280x720 at 2.4mbps | 192 kbps |
5 | 1024x576 at 1.8 mbps | 128 kbps |
6 | 848x480 at 1 mbps | 128 kbps |
7 | 640x360 at 668 kbps | 64 kbps |
10 | Audio only | 64 kbps |
Transmux Slots
Transmux slots are defined by an object with
videoBitrate
, audioBitrate
, videoWidth
, and videoHeight
properties.The maximum allowed total bitrate (video + audio) of a transmux slot is 16 Mbps. Customers can choose their resolution and bitrates provided bitrates do not reach the maximum bitrate threshold.
videoBitrate
and audioBitrate
are in bits per second.Example profile:
1{2 "videoBitrate": 192000,3 "audioBitrate": 4000000,4 "videoWidth": 1920,5 "videoHeight": 10806}