채널 생성
- 인쇄
- PDF
채널 생성
- 인쇄
- PDF
기사 요약
이 요약이 도움이 되었나요?
의견을 보내 주셔서 감사합니다.
VOD Station은 채널을 생성하기 위한 API를 제공하며, 생성한 채널 조회를 위해 채널 목록 조회 API와 채널 정보 조회 API를 제공합니다.
참고
VOD Station 과 연동된 CDN+ 의 콘텐츠 인증(Secure Token) 사용 시 유의 사항은 다음과 같습니다.
- CDN+ 의 Viewer 설정 중 Secure Token 을 아래와 같이 설정해야 합니다. CDN+ Viewer 설정 변경 방법은 사용 가이드를 참조해 주십시오.
- 인증 예외 대상 확장자
- .ts, .mp4, .m4s, .vtt, .key
- 원본에 Token 전달하는 확장자
- .m3u8, .mpd
- 인증 예외 대상 확장자
- 인증 토큰 발급 시 ACL에 wildcard path를 입력해야 합니다.
- 단일 비트레이트 재생 : '/[protocol]/[encryptedBucketName]/[path]/[video filename]/*'
- 예시)
- HLS : https://example.cdn.ntruss.com/hls/guide/vod-5100k.mp4/index.m3u8
- wildcard path : '/hls/guide/vod-5100k.mp4/*'
- DASH : https://example.cdn.ntruss.com/dash/guide/vod-5100k.mp4/index.m3u8
- wildcard path : '/dash/guide/vod-5100k.mp4/*'
- HLS : https://example.cdn.ntruss.com/hls/guide/vod-5100k.mp4/index.m3u8
- 예시)
- Adaptive 비트레이트 재생 : '/[protocol]/[encryptedBucketName]/[path]/[prefix],[video filenames],[suffix].smil/*'
- 예시)
- HLS : https://example.cdn.ntruss.com/hls/guide/abr/vod-,5400,2400,1200,0900,0600,0300,k.mp4.smil/master.m3u8
- wildcard path : '/hls/guide/abr/vod-,5400,2400,1200,0900,0600,0300,k.mp4.smil/*'
- DASH : https://example.cdn.ntruss.com/dash/guide/abr/vod-,5400,2400,1200,0900,0600,0300,k.mp4.smil/manifest.mpd
- wildcard path : '/dash/guide/abr/vod-,5400,2400,1200,0900,0600,0300,k.mp4.smil/*'
- HLS : https://example.cdn.ntruss.com/hls/guide/abr/vod-,5400,2400,1200,0900,0600,0300,k.mp4.smil/master.m3u8
- 예시)
- 단일 비트레이트 재생 : '/[protocol]/[encryptedBucketName]/[path]/[video filename]/*'
요청
POST https://vodstation.apigw.fin-ntruss.com/api/v2/channels
요청 헤더
헤더명 | 설명 |
---|---|
x-ncp-region_code | 네이버 클라우드 플랫폼 region code x-ncp_region_code:{Region Code} |
x-ncp-apigw-timestamp | 1970년 1월 1일 00:00:00 협정 세계시(UTC)부터의 경과 시간을 밀리초(Millisecond)로 나타내며 API Gateway 서버와 시간 차가 5분 이상 나는 경우 유효하지 않은 요청으로 간주x-ncp-apigw-timestamp:{Timestamp} |
x-ncp-iam-access-key | 네이버 클라우드 플랫폼 포털에서 발급받은 Access Key ID 값x-ncp-iam-access-key:{Sub Account Access Key} |
x-ncp-apigw-signature-v2 | Access Key ID 값과 Secret Key로 암호화한 서명x-ncp-apigw-signature-v2:{API Gateway Signature} |
Content-Type | Request body content type을 application/json으로 지정Content-Type: application/json |
요청 바디
API 요청 시 필드명의 대소문자 구분이 필요합니다.
필드명 | 필수 여부 | 타입 | 제약 사항 | 기본값 | 설명 |
---|---|---|---|---|---|
name | Yes | String | 생성할 채널의 이름 | ||
storageBucketName | Yes | String | 채널과 연동할 네이버 클라우드 플랫폼 Object Storage 버킷 이름 | ||
accessPrivateFiles | No | Boolean | 연동할 Object Stroage 버킷 내 비공개 파일에 대해 VOD Station에서 접근 제한을 설정함 허용한다면 파일을 공개 처리하지 않아도 Streaming이 가능 | ||
protocolList[] | Yes | Array(String) | HLS, DASH | 채널의 스트리밍 프로토콜 HLS와 DASH를 지원하며, 중복 선택 가능 | |
encryptionList[] | No | Array | 채널의 미디어 보호 설정 Media Encryption 기능과 DRM(FairPlay, Widevine/PlayReady) 연동 인터페이스 제공 | ||
encryptionList[].drmContentId | Optional | String | 숫자, 영문 1-200자 Media Encryption 설정시 필요치 않음 | DRM Content ID DRM Key 요청시 해당 값을 포함해 요청하며, License 발급시 필요한 값 | |
encryptionList[].drmKeyUrl | Optional | String | http(s):// 포함 URL Media Encryption 설정시 필요치 않음 | DRM 제공사의 CPIX API URL VOD Station은 공식적으로 Inka Pallyacon DRM의 CPIX v1 API와의 연동 지원 DRM 패키징을 위해 VOD Station은 xml body를 포함해 POST 요청 | |
encryptionList[].systemIdList | Optional | Array(String) | 공백 허용 안함, "-"허용, 256자 이하 Media Encryption 설정시 필요치 않음 | DRM Type 별 SystemID 설정하려는 Type에 맞는 값 입력 필요 | |
encryptionList[].drmTypeCode | Optional | Integer | FairPlay: 21 Widevine/PlayReady: 22 Media Encryption 설정시 필요치 않음 | DRM Type 설정 필요 | |
encryptionList[].mediaEncryptionTypeCode | Optional | Integer | AES-128: 1 DRM 설정시 필요치 않음 | HLS AES-128을 설정함 FairPlay와 함께 설정할 수 없음 | |
encryptionList[].protocol | Yes | String | HLS, DASH | DRM 혹은 Media Encryption에 맞는 protocol을 설정함 Widevine/PlayReady: DASH FairPlay: HLS MediaEncryption: HLS | |
segmentDuration | Yes | Integer | 5-20 사이 정수 | Segment당 재생 시간 재생 시간이 길어질수록 Segment의 크기가 커지며, Client 네트워크 상태에 따라 로딩 시간이 길어질 수 있음 반면에, Segment 시간이 짧아질수록 Segment의 크기는 작아지며, 지나치게 짧게 설정 시 Client 네트워크 상태에 따라 버퍼링 발생 가능 (단위: 초) | |
segmentDurationOption | No | String | BASIC, VARIABLE | BASIC | 모든 Segment가 keyframe으로 시작하도록 Segment를 생성함 VARIABLE 옵션 선택시 설정한 segmentDuration 값과 실제 생성된 Segment의 Duration같은 차이가 발생할 수 있으며, Segment Duration이 일정하지 않을 수 있음 |
createCdn | Yes | Boolean | true, false | VOD Station은 CDN 연동이 필수 채널 생성 시 함께 생성하거나 별도로 생성해 사용 가능 | |
cdnTypeList[] | Optional | String | createCdn을 true 설정시 필수 입력 Supported value: CDN+ | 현재 자동 채널 생성은 CDN+만 지원하고 있으며, 별도 CDN 생성은 CDN+ 연동 가이드 참고 바람 |
응답
필드명 | 타입 | 설명 | 비고 |
---|---|---|---|
content | Object | VOD Station OPEN API 응답 객체 | |
content.id | String | 생성된 채널의 ID | |
content.name | Object | 채널 이름 | |
content.channelStatus | Integer | 채널의 현재 상태 | CREATING, READY, STOPPING, STOPPED, TERMINATING, TERMINATED |
content.storageBucketName | String | 채널에 연동된 Object Storage 버킷 이름 | |
content.encryptedBucketName | String | 채널에 연동된 Object Storage 버킷의 암호화된 이름으로 재생 URL 생성시 사용 | |
content.accessPrivateFiles | Boolean | 버킷 내 비공개 파일에 대한 VOD Station에서의 접근 제한 설정 | |
content.segmentDuration | Integer | 채널의 segment 재생 길이 (단위 : 초) | |
content.segmentDurationOption | String | 채널의 segment keyframe 정렬 옵션 | |
content.protocolList[] | Array(String) | 채널의 스트리밍 프로토콜 목록 | |
content.createTime | Integer | 채널의 생성 시작 시간 | |
content.readyTime | Integer | 채널의 생성 완료 시간 | |
content.cdnCreatedTime | Integer | 채널에 연동하여 자동 생성된 CDN의 생성 시간 | |
content.playUrl | String | CDN을 통한 재생 URL Template | |
content.cdnStatus | String | 채널에 연동된 CDN의 상태 자동 생성하지 않으면 NOT_FOUND 로 노출 | |
content.cdnDomain | String | 자동 생성된 CDN의 도메인 | |
content.cdnServiceName | String | 자동 생성된 CDN의 서비스명 | |
content.storageBucketStatus | String | 채널에 연동된 Object Storage 버킷의 상태 | |
content.originPath | String | 생성한 채널의 원본 경로로 별도 CDN 생성 시 참고 | |
content.encryptionList[] | Array | 채널의 미디어 보안 설정 | |
content.encryptionList[].protocol | String | 미디어 보안 대상 프로토콜 | |
content.encryptionList[].mediaEncryptionTypeCode | Integer | 미디어 보안 설정의 암호화 타입 1: AES-128 2: Sample-AES 3: CENC | |
content.encryptionList[].drmTypeCode | Intenger | 미디어 보안 설정의 DRM 타입 21: FairPlay 22: Widevine/PlayReady | |
content.encryptionList[].drmTypeName | String | 미디어 보안 설정의 DRM 타입 명 | |
content.encryptionList[].drmContentId | String | VOD Station에서 패키징시 요청할 Content ID | |
content.encryptionList[].systemIdList | Array(String) | VOD Station에서 패키징시 요청할 DRM System ID | |
content.encryptionList[].drmKeyUrl | String | VOD Station에서 패키징시 요청할 DRM CPIX API URL | |
error | Object | 오류 응답 코드 및 메시지 | |
error.errorCode | String | 오류 응답 코드 | |
error.message | String | 오류 응답 메시지 | |
error.details | String | error message의 상세한 설명 api gateway 오류 발생 시 응답 |
예시
요청 예시
POST https://vodstation.apigw.fin-ntruss.com/api/v2/channels
POST /api/v2/channels
HOST: vodstation.apigw.fin-ntruss.com
Content-Type: application/json
x-ncp-region_code:FKR
x-ncp-apigw-timestamp:1521787414578
x-ncp-iam-access-key:6uxz1nKkcYwUjWRG5Q1V7NsW0i5jErlu2NjBXXgy
x-ncp-apigw-signature-v2:iJFK773KH0WwQ79PasqJ+ZGixtpDQ/abS57WGQdld2M=
Reqeust body (non DRM)
{
"cdnTypeList": [
"CDN+"
],
"name": "api-guide",
"protocolList": [
"HLS", "DASH"
],
"segmentDuration": 5,
"storageBucketName": "vodstation-bucket"
}
Request body (DRM using MediaEncryption and Widevine/PlayReady)
{
"cdnTypeList": [
"CDN+"
],
"createCdn": true,
"encryptionList": [
{
"drmContentId": "openapi",
"drmKeyUrl": "https://kms.example.com/cpix/token",
"systemIdList": [
"9A04F079-9840-4286-AB92-E65BE0885F95",
"EDEF8BA9-79D6-4ACE-A3C8-27DCD51D21ED"
],
"drmTypeCode": 22,
"protocol": "DASH"
},
{
"mediaEncryptTypeCode": 1,
"protocol":"HLS"
}
],
"name": "api-guide-drm",
"protocolList": [
"HLS", "DASH"
],
"segmentDuration": 5,
"accessPrivateFiles": true,
"storageBucketName": "vodstaton-test"
}
Request body (DRM using FairPlay and Widevine/PlayReady)
{
"cdnTypeList": [
"CDN+"
],
"createCdn": true,
"encryptionList": [
{
"drmContentId": "openapi",
"drmKeyUrl": "https://kms.example.com/cpix/token",
"systemIdList": [
"9A04F079-9840-4286-AB92-E65BE0885F95",
"EDEF8BA9-79D6-4ACE-A3C8-27DCD51D21ED"
],
"drmTypeCode": 22,
"protocol": "DASH"
},
{
"drmContentId": "openapi",
"drmKeyUrl": "https://kms.example.com/cpix/token",
"systemIdList": [
"94CE86FB-07FF-4F43-ADB8-93D2FA968CA2"
],
"drmTypeCode": 21,
"protocol": "HLS"
},
],
"name": "api-guide-drm",
"protocolList": [
"HLS", "DASH"
],
"segmentDuration": 5,
"accessPrivateFiles": true,
"storageBucketName": "vodstaton-test"
}
Request body (DRM using Widevine)
{
"cdnTypeList": [
"CDN+"
],
"createCdn": true,
"encryptionList": [
{
"drmContentId": "openapi",
"drmKeyUrl": "https://kms.example.com/cpix/token",
"systemIdList": [
"EDEF8BA9-79D6-4ACE-A3C8-27DCD51D21ED"
],
"drmTypeCode": 22,
"protocol": "DASH"
},
],
"name": "api-guide-drm",
"protocolList": [
"HLS", "DASH"
],
"segmentDuration": 5,
"accessPrivateFiles": true,
"storageBucketName": "vodstaton-test"
}
Request body (using MediaEncryption Only)
{
"cdnTypeList": [
"CDN+"
],
"createCdn": true,
"encryptionList": [
{
"mediaEncryptTypeCode": 1,
"protocol":"HLS"
}
],
"name": "api-guide-drm",
"protocolList": [
"HLS", "DASH"
],
"segmentDuration": 5,
"accessPrivateFiles": true,
"storageBucketName": "vodstaton-test"
}
응답 예시
HTTP/1.1 200 OK
Server: nginx
Date: Wed, 12 Sep 2018 09:53:32 GMT
Content-Type: application/json;charset=utf-8
Connection: keep-alive
Access-Control-Allow-Origin: *
x-ncp-trace-id: 36c9k60om4p3238cpmc9gm4cj4
{
"content": {
"id": "vs-20201112113327-Icwk9YO",
"name": "api-guide-drm",
"channelStatus": "CREATING",
"storageBucketName": "vodstation-bucket",
"encryptedBucketName": "zz0G2Esbn14HUBlaiZSVkg__",
"segmentDuration": 5,
"segmentDurationOption": "BASIC",
"accessPrivateFiles": true,
"protocolList": [
"HLS",
"DASH"
],
"createTime": 1605148407,
"cdnCreatedTime": 1605148407,
"playUrl": "https://example.cdn.ntruss.com/[protocol]/[Object Storage Bucket(encryption name)]/[path]/[video filename]/[manifest]",
"cdnStatus": "CREATING",
"cdnDomain": "example.cdn.ntruss.com",
"cdnServiceName": "vscdn-Icwk9YO",
"storageBucketStatus": "RUNNING",
"originPath": "vs-k1.video.media.ntruss.com/132/vs-20201112113327-Icwk9YO",
"encryptList": [
{
"protocol": "DASH",
"mediaEncryptTypeCode": 3,
"mediaEncryptionTypeName": "AES-128",
"drmTypeCode": 22,
"drmTypeName": "Widevine/PlayReady",
"drmContentId": "openapi",
"systemIdList": ["9A04F079-9840-4286-AB92-E65BE0885F95", "EDEF8BA9-79D6-4ACE-A3C8-27DCD51D21ED"],
"drmKeyUrl": "https://kms.example.com/cpix/token"
},
{
"protocol": "HLS",
"mediaEncryptTypeCode": 1,
"mediaEncryptionTypeName": "AES-128"
}
]
}
}
이 문서가 도움이 되었습니까?