Create channel
- Print
- PDF
Create channel
- Print
- PDF
Article Summary
Share feedback
Thanks for sharing your feedback!
An API to create channels of Live Station. Provides the Channel list view API and the Channel information view API to view the created channels.
Note
The following are the cautions for creating channels:
- When the streaming is redundant, the mainstream must be streamed first.
- If you want to create an LL-HLS channel, you should employ the low latency image quality sets.
- The official LL-HLS release is only supported where Global Edge CDN is integrated.
- If you are using an existing CDN, you need to update the previously created CDN. For how to update the CDN, see the User guide.
- For efficient LL-HLS channel usage, we recommend that you set the keyframe to 1 second. For the detailed streaming instructions, see the User guide.
- Live Station supports effortless integration with One Click Multi DRM. Only single-key packaging is supported.
- Channels using resolution settings that include passthrough resolutions do not support DRM Encryption.
Note
The following are the cautions for using the content authentication (Signed URL/JWT) control of Global Edge integrated with Live Station.
- You must set Global Edge's cache to fit in with the outputProtocol of the channel that created Edge Auth. For details on changing the Edge Auth of Global Edge, see API guide.
- Authentication exclusion extensions
- HLS : .ts, .jpg
- HLS,DASH : .ts, .jpg, .m4s, .m4v, .m4a
- LL_HLS: .jpg, .m4s, .m4v, .m4a
- Extensions that forward authentication token to origin
- HLS : .m3u8
- HLS/DASH : .m3u8, .mpd
- LL_HLS : playlist.m3u8
- Authentication exclusion extensions
- At the time of issuing the authentication token, you must enter the wildcard path in acl and path for both Signed URL and JWT. For details on issuing the authentication token, see the User guide.
- wildcard path : '/live/video/{channelId}/*'
Content protection settings
Live Station's DRM Encryption supports the multi-DRM of real-time content.
You can easily set DRM functions in DRM Settings within the created channel. Multi DRM Encryption is supported according to the selected outputProtocol.
For details on the encryption type and supported device for each DRM technology and other platforms and versions, see Link.
Encryption type | Protocol | DRM type | Encryption algorithm | Supported devices |
---|---|---|---|---|
DRM | HLS | FairPlay | AES-CBC | Mac/iOS Safari browser, iOS/iPadOS/tvOS app, HLS HTML5 |
DRM | DASH | PlayReady, Widevine | CENC (Common Encryption) | MS Edge, Internet Explorer 11, Google Chrome, Firefox, Opera DASH HTML5 |
- DRM type
- FairPlay: DRM technical specifications provided by Apple. It encrypts each HLS segment by using AES-CBC method.
- Widevine: DRM technical specifications provided by Google. It uses the AES-128 method for encryption according to the common encryption specifications.
- PlayReady: DRM technical specifications provided by Microsoft. It uses the AES-128 method for encryption according to the common encryption specifications.
Requests
POST https://livestation.apigw.ntruss.com/api/v2/channels
Request headers
Header name | Required | Description |
---|---|---|
x-ncp-apigw-timestamp | YES | Time elapsed since January 1, 1970 00:00:00 UTC in milliseconds The request is considered invalid if the time difference compared to the API Gateway server is more than 5 minutes x-ncp-apigw-timestamp:{Timestamp} |
x-ncp-iam-access-key | YES | Access key ID value issued from NAVER Cloud Platform portalx-ncp-iam-access-key:{Sub Account Access Key} |
x-ncp-apigw-signature-v2 | YES | Signature encrypted with the access key ID value and secret keyx-ncp-apigw-signature-v2:{API Gateway Signature} |
Content-Type | YES | Specifies the request body content type as application/jsonContent-Type: application/json |
x-ncp-region_code | YES | Region code (KR) |
Request bodies
Field name | Required | Type | Service limits | Description |
---|---|---|---|---|
channelName | Yes | String | 3 to 20 characters can be entered Special character hyphens (-) are allowed | Name of the channel to be created |
envType | Optional | String | DEV STAGE REAL | Will be defaulted to REAL if not specified |
outputProtocol | Optional | String | HLS HLS,DASH LL_HLS | Will be defaulted to HLS if not specified |
cdn | Yes | Object | CDN Object | |
cdn.createCdn | Yes | Boolean | true, false | CDN Object |
cdn.cdnType | Yes | String | CDN_PLUS, GLOBAL_CDN,GLOBAL_EDGE | |
cdn.profileId | Yes | Integer | A Global Edge profile required when creating a new GLOBAL_EDGE | |
cdn.regionType | Yes | String | KOREA,JAPAN,GLOBAL | Global Edge service region |
cdn.cdnInstanceNo | Optional | Integer | This must be set if cdn.createCdn is false | |
qualitySetId | Yes | Integer | When creating an LL-HLS channel, request a low latency image quality sets | |
useDvr | Yes | Boolean | true, false | |
immediateOnAir | Optional | Boolean | true, false | Automatic recording option that records simultaneously with streaming |
timemachineMin | Optional | Integer | The unit is minutes and can only be set to 360 | Options related to the time machine feature that allows you to go back to the point where you started recording This must be set if useDvr is true |
record | Yes | Object | ||
record.format | Optional | String | MP4,HLS,ALL | Specify the type of recording file that is to be automatically saved to the bucket |
record.type | Yes | String | NO_RECORD, AUTO_UPLOAD, MANUAL_UPLOAD | Specify the upload type of the saved recording file When set to "NO_RECORD," the recording feature cannot be used |
record.bucketName | Optional | String | Automatically save recording files to the bucket after the live broadcast is finished through the auto save feature | |
record.filePath | Optional | String | Automatically save recording files to the specified filePath after the live broadcast is finished through the auto save feature filePaths must start with "/" | |
record.accessControl | Optional | String | PRIVATE, PUBLIC_READ | Option to specify the scope of Object Storage bucket disclosure when uploading recording files through the auto save feature Default: PRIVATE |
isStreamFailOver | Optional | Boolean | true, false | Option to apply the streaming redundancy The streaming redundancy settings are inherited to the streaming encoder redundancy |
drmEnabledYn | Yes | Boolean | Whether to apply DRM Encryption settings | |
drm | Optional | Object | DRM Encryption settings using Live Station When setting DRM, FairPlay and Widevine/PlayReady DRM are supported | |
drm.siteId | Optional | String | Site id created through One Click Multi DRM product | |
drm.contentId | Optional | String | Unique ID of content where DRM Encryption is applied Used for DRM packaging. You can enter 3 to 100 characters using English letters, numbers, hyphens (-), and underscores (_). |
Responses
Field name | Type | Description | Note |
---|---|---|---|
channelId | String | ||
channelName | String | ||
envType | String | Will be defaulted to REAL if not specified | DEV STAGE REAL |
outputProtocol | String | Will be defaulted to HLS if not specified | HLS HLS,DASH LL_HLS |
cdn | Object | ||
cdn.createCdn | Boolean | ||
cdn.cdnType | String | CDN_PLUS, GLOBAL_CDN,GLOBAL_EDGE | |
cdn.profileId | Integer | A Global Edge profile required when creating a new GLOBAL_EDGE | |
cdn.regionType | String | Global Edge service region | KOREA,JAPAN,GLOBAL |
cdn.cdnInstanceNo | Integer | This must be set if cdn.createCdn is false | |
qualitySetId | Integer | ||
useDvr | Boolean | ||
immediateOnAir | Boolean | ||
timemachineMin | Integer | ||
record | Object | ||
record.format | String | MP4,HLS,ALL | |
record.type | String | NO_RECORD, AUTO_UPLOAD, MANUAL_UPLOAD | |
record.bucketName | String | ||
record.filePath | String | ||
record.accessControl | String | PRIVATE, PUBLIC_READ | |
uploadPath | String | In case of AUTO_UPLOAD option, the path to upload recording files | |
backupStreamKey | String | Backup stream key for streaming redundancy | |
isStreamFailOver | Boolean | Whether to apply streaming redundancy settings | true, false |
origin | Object | Live Station original information for integrating with CDN | |
origin.originDomain | String | Live Station original domain for integrating with CDN | |
origin.originPath | String | Live Station original detailed path for integrating with CDN | |
drmEnabledYn | Boolean | Whether to apply DRM Encryption settings | |
drm | Object | DRM Encryption settings using Live Station When setting DRM, FairPlay and Widevine/PlayReady DRM are supported | |
drm.siteId | String | Site id created through One Click Multi DRM product | |
drm.contentId | String | Unique ID of content where DRM Encryption is applied Used for DRM packaging. You can enter 3 to 100 characters using English letters, numbers, hyphens (-), and underscores (_). |
Examples
Request examples
POST /api/v2/channels
HOST: livestation.apigw.ntruss.com
Content-Type: application/json
x-ncp-apigw-timestamp:1521787414578
x-ncp-iam-access-key:6uxz1nKkcYwUjWRG5Q1V7NsW0i5jErlu2NjBXXgy
x-ncp-apigw-signature-v2:iJFK773KH0WwQ79PasqJ+ZGixtpDQ/abS57WGQdld2M=
x-ncp-region_code:KR
Request body (if cdn.createCdn == true)
{
"channelName" : "testchannel",
"cdn" : {
"createCdn":true,
"cdnType":"GLOBAL_EDGE",
"profileId" : 291,
"regionType" : "KOREA"
},
"qualitySetId" : 12345,
"useDvr" : true,
"immediateOnAir" : true,
"timemachineMin" : 360,
"envType" : "DEV",
"outputProtocol" : "LL_HLS",
"record": {
"type": "AUTO_UPLOAD",
"format": "MP4",
"bucketName": "hls",
"filePath": "/livestation",
"accessControl": "PRIVATE"
},
"isStreamFailOver": true,
"drmEnabledYn": true,
"drm": {
"siteId": "drm-20231115142326-nHyNw",
"contentId": "my-Test-Multidrm"
}
}
Request body (if cdn.createCdn == false)
{
"channelName" : "testchannel",
"cdn" : {
"createCdn" : false,
"cdnType" : "GLOBAL_EDGE",
"cdnInstanceNo" : 123456
},
"qualitySetId" : 12345,
"useDvr" : true,
"immediateOnAir" : true,
"timemachineMin" : 360,
"envType" : "DEV",
"outputProtocol" : "HLS",
"record": {
"type": "AUTO_UPLOAD",
"format": "MP4",
"bucketName": "hls",
"filePath": "/livestation",
"accessControl": "PRIVATE"
},
"isStreamFailOver": true,
"drmEnabledYn": true,
"drm": {
"siteId": "drm-20231115142326-nHyNw",
"contentId": "my-Test-Multidrm"
}
}
Response examples
HTTP/1.1 200 OK
Server: nginx
Date: Fri, 26 Feb 2021 09:53:32 GMT
Content-Type: application/json;charset=utf-8
Connection: keep-alive
Access-Control-Allow-Origin: *
x-ncp-trace-id: 36c9k60om4p3238cpmc9gm4cj4
{
"content": {
"channelName" : "testchannel",
"channelId" : "ls-20200217154656-Rnd49",
"cdn" : {
"createCdn" : false,
"cdnType" : "GLOBAL_EDGE",
"profileId" : 223
"cdnInstanceNo" : 123456
}
"qualitySetId" : 12345,
"useDvr" : true,
"immediateOnAir" : true,
"timemachineMin" : 360,
"envType": "DEV",
"outputProtocol": "HLS,DASH",
"uploadPath": "/hls/livestation",
"record": {
"type": "AUTO_UPLOAD",
"bucketName": "hls",
"filePath": "/livestation",
"format": "MP4",
"accessControl": "PRIVATE"
},
"origin": {
"originDomain": "ls-k1.video.media.ntruss.com",
"originPath": "1"
},
"drmEnabledYn": true,
"drm": {
"siteId": "drm-20231115142326-nHyNw",
"contentId": "my-Test-Multidrm"
}
"backupStreamKey": "lbuy4dcrxk2ctxs8uqxanpy833p08vvz?backup=true",
"isStreamFailOver": true
}
}
Was this article helpful?