채널 생성
- 인쇄
- PDF
채널 생성
- 인쇄
- PDF
기사 요약
이 요약이 도움이 되었나요?
의견을 보내 주셔서 감사합니다.
Live Station 의 채널을 생성하는 API 입니다. 생성한 채널 조회를 위해 채널 목록 조회 API와 채널 정보 조회 API를 제공합니다.
참고
채널 생성 시 유의 사항은 다음과 같습니다.
- 송출 이중화 설정을 사용할 경우 반드시 메인 스트림을 먼저 송출해야 합니다.
- LL-HLS 채널 생성이 필요 하신 경우, 반드시 Low Latency 용 화질 세트를 활용해야만 합니다.
- LL-HLS 정식 버전은 Global Edge CDN 연동 환경에서만 지원합니다.
- 기존 생성된 CDN을 사용할 경우 기존 생성된 CDN 갱신이 필요합니다. CDN 갱신 방법은 사용 가이드를 참고해 주십시오.
- 원활한 LL-HLS 채널 사용을 위해 키 프레임을 1초로 설정하는 것을 권장합니다. 자세한 송출 방법은 사용 가이드를 참고해 주십시오.
- Live Station은 One Click Multi DRM 과 손쉬운 연동을 지원하며, Single-key 패키징만 지원합니다.
- Passthrough 화질이 포함된 화질 설정을 사용하는 채널은 DRM Encryption 을 지원하지 않습니다.
참고
Live Station 과 연동된 Global Edge의 콘텐츠 인증(Signed URL/JWT) 제어 사용 시 유의 사항은 다음과 같습니다.
- Global Edge 의 캐시 설정 중 Edge Auth 를 생성한 채널의 outputProtocol에 맞게 설정해야 합니다. 자세한 Global Edge Edge Auth 설정 변경 방법은 API 가이드 를 참고해 주십시오.
- 인증 제외 확장자
- HLS : .ts, .jpg
- HLS,DASH : .ts, .jpg, .m4s, .m4v, .m4a
- LL_HLS: .jpg, .m4s, .m4v, .m4a
- 인증 토큰을 원본에 전달할 확장자
- HLS : .m3u8
- HLS/DASH : .m3u8, .mpd
- LL_HLS : playlist.m3u8
- 인증 제외 확장자
- 인증 토큰 발급 시 Signed URL, JWT 각각 acl, path에 wildcard path를 입력해야 합니다. 자세한 인증 토큰 발급 방식은 사용 가이드 를 참고해 주십시오.
- wildcard path : '/live/video/{channelId}/*'
콘텐츠 보호 설정
Live Station DRM Encryption 은 실시간 콘텐츠의 Multi DRM 을 지원합니다.
채널 생성 내 DRM 설정 영역에서 간편하게 DRM 기능을 설정할 수 있으며 선택한 OutputProtocol 에 따라 Multi DRM Encryption 을 지원합니다.
DRM 기술별 암호화 방식 및 지원 단말과 다른 플랫폼 및 버전에 대한 상세 정보는 링크를 참고해 주십시오.
암호화 방식 | 프로토콜 | DRM 유형 | 암호화 알고리즘 | 지원 단말 |
---|---|---|---|---|
DRM | HLS | FairPlay | AES-CBC | Mac/iOS Safari 브라우저, iOS/iPadOS/tvOS 앱, HLS HTML5 |
DRM | DASH | PlayReady, Widevine | CENC (Common Encryption) | MS Edge, Internet Explorer 11, Google Chrome, Firefox, Opera DASH HTML5 |
- DRM 유형
- FairPlay: Apple에서 제공하는 DRM 기술 규격입니다. 각 HLS 세그먼트를 AES-CBC 방식으로 암호화합니다.
- Widevine: Google에서 제공하는 DRM 기술 규격입니다. Common Encryption 규격에 따라 AES-128 방식으로 암호화합니다.
- PlayReady: Microsoft에서 제공하는DRM 기술 규격입니다. Common Encryption 규격에 따라 AES-128 방식으로 암호화합니다.
요청
POST https://livestation.apigw.ntruss.com/api/v2/channels
요청 헤더
헤더명 | 필수 여부 | 설명 |
---|---|---|
x-ncp-apigw-timestamp | YES | 1970년 1월 1일 00:00:00 협정 세계시(UTC)부터의 경과 시간을 밀리초(Millisecond)로 나타냄 API Gateway 서버와 시간 차가 5분 이상 나는 경우 유효하지 않은 요청으로 간주 x-ncp-apigw-timestamp:{Timestamp} |
x-ncp-iam-access-key | YES | 네이버 클라우드 플랫폼 포털에서 발급받은 Access Key ID 값x-ncp-iam-access-key:{Sub Account Access Key} |
x-ncp-apigw-signature-v2 | YES | Access Key ID 값과 Secret Key로 암호화한 서명x-ncp-apigw-signature-v2:{API Gateway Signature} |
Content-Type | YES | Request body content type을 application/json으로 지정Content-Type: application/json |
x-ncp-region_code | YES | 리전 코드 (KR) |
요청 바디
필드명 | 필수 여부 | 타입 | 제약 사항 | 설명 |
---|---|---|---|---|
channelName | Yes | String | 최소 3글자 이상 최대 20자 문자까지 입력 가능 특수 문자 붙임표(_) 허용 | 생성할 채널의 이름 |
envType | Optional | String | DEV STAGE REAL | 입력 하지 않을 경우 REAL 로 디폴트 셋팅 |
outputProtocol | Optional | String | HLS HLS,DASH LL_HLS | 입력 하지 않을 경우 HLS 로 디폴트 셋팅 |
cdn | Yes | Object | CDN Object | |
cdn.createCdn | Yes | Boolean | true, false | CDN Object |
cdn.cdnType | Yes | String | GLOBAL_CDN,GLOBAL_EDGE | CDN+ 미지원 |
cdn.profileId | Yes | Integer | GLOBAL_EDGE 신규 생성시 필요한 Global Edge 의 프로필 | |
cdn.regionType | Yes | String | KOREA,JAPAN,GLOBAL | Global Edge 서비스 지역 |
cdn.cdnInstanceNo | Optional | Integer | cdn.createCdn 이 false 일 경우 반드시 설정해야 함 | |
qualitySetId | Yes | Integer | LL-HLS 채널을 생성할 경우, Low Latency 용 화질 세트 요청 | |
useDvr | Yes | Boolean | true, false | |
immediateOnAir | Optional | Boolean | true, false | 송출과 동시에 녹화가 진행되는 자동 녹화 옵션 |
timemachineMin | Optional | Integer | 단위는 분(minutes) 이며 360 으로만 설정 가능 | 녹화 시작 시점까지 영상을 되돌려 볼 수 있는 타임머신 기능 관련 옵션 useDvr 이 true 일 경우 반드시 설정해야 함 |
record | Yes | Object | ||
record.format | Optional | String | MP4,HLS,ALL | 버킷으로 자동 저장 되는 녹화 파일의 타입을 지정 |
record.type | Yes | String | NO_RECORD, AUTO_UPLOAD, MANUAL_UPLOAD | 저장된 녹화 파일 업로드 타입을 지정 "NO_RECORD" 로 설정 시 녹화 기능 사용 불가 |
record.bucketName | Optional | String | 자동 저장 기능을 통해 라이브 방송 종료 후 입력한 Bucket 에 녹화 파일이 자동 저장 | |
record.filePath | Optional | String | 자동 저장 기능을 통해 라이브 방송 종료 후 지정한 filePath 에 녹화 파일이 자동 저장 filePath 는 "/" 부터 시작 해야함 | |
record.accessControl | Optional | String | PRIVATE, PUBLIC_READ | 자동 저장 기능을 통해 녹화 파일 업로드시 Object Storage Bucket 공개 범위를 지정하는 옵션 Default: PRIVATE |
isStreamFailOver | Optional | Boolean | true, false | 송출 이중화 적용을 위한 옵션 송출 이중화 설정을 통해 송출 인코더 이중화 구성 |
drmEnabledYn | Yes | Boolean | DRM Encryption 설정 적용 유무 | |
drm | Optional | Object | Live Station 을 활용한 DRM Encryption 설정 DRM 설정 시 FairPlay, Widevine/PlayReady DRM 지원 | |
drm.siteId | Optional | String | One Click Multi DRM 상품을 통해 생성한 site id | |
drm.contentId | Optional | String | DRM Encryption 을 적용할 콘텐츠의 고유 ID DRM 패키징을 위해 사용되며 최소 3글자 이상 영문/숫자 또는 ‘-'(하이픈), ‘_'(언더바) 포함 최대 100자 문자까지 입력 가능합니다. |
응답
필드명 | 타입 | 설명 | 비고 |
---|---|---|---|
channelId | String | ||
channelName | String | ||
envType | String | 입력 하지 않을 경우 REAL 로 디폴트 셋팅 | DEV STAGE REAL |
outputProtocol | String | 입력 하지 않을 경우 HLS 로 디폴트 셋팅 | HLS HLS,DASH LL_HLS |
cdn | Object | ||
cdn.createCdn | Boolean | ||
cdn.cdnType | String | GLOBAL_CDN,GLOBAL_EDGE | |
cdn.profileId | Integer | GLOBAL_EDGE 신규 생성시 필요한 Global Edge 의 프로필 | |
cdn.regionType | String | Global Edge 서비스 지역 | KOREA,JAPAN,GLOBAL |
cdn.cdnInstanceNo | Integer | cdn.createCdn 이 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 | AUTO_UPLOAD 옵션일때 녹화 파일 업로드 경로 | |
backupStreamKey | String | 송출 이중화를 위한 백업 스트림키 | |
isStreamFailOver | Boolean | 송출 이중화 설정 적용 여부 | true, false |
origin | Object | CDN 연동을 위한 Live station 원본 정보 | |
origin.originDomain | String | CDN 연동을 위한 Live station 원본 도메인 | |
origin.originPath | String | CDN 연동을 위한 Live station 원본 상세 경로 | |
drmEnabledYn | Boolean | DRM Encryption 설정 적용 유무 | |
drm | Object | Live Station 을 활용한 DRM Encryption 설정 DRM 설정시 FairPlay, Widevine/PlayReady DRM 지원 | |
drm.siteId | String | One Click Multi DRM 상품을 통해 생성한 site id | |
drm.contentId | String | DRM Encryption 을 적용할 콘텐츠의 고유 ID DRM 패키징을 위해 사용 되며 최소 3글자 이상 영문/숫자 또는 ‘-'(하이픈), ‘_'(언더바) 포함 최대 100자 문자까지 입력 가능합니다. |
예시
요청 예시
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",
"cdnDomain": "mycdn.edge.naverncp.com",
"profileId": 299,
"cdnInstanceNo": 1541959
},
"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"
}
}
응답 예시
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",
"cdnDomain": "mycdn.edge.naverncp.com",
"profileId": 299,
"cdnInstanceNo": 1541959
},
"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
}
}
이 문서가 도움이 되었습니까?