채널 생성

Prev Next

Classic/VPC 환경에서 이용 가능합니다.

VOD 스트리밍을 위한 채널을 생성합니다.

요청

요청 형식을 설명합니다. 요청 형식은 다음과 같습니다.

메서드 URI
POST /api/v2/channels

요청 헤더

VOD Station API에서 공통으로 사용하는 헤더에 대한 정보는 VOD Station 요청 헤더를 참조해 주십시오.

요청 바디

요청 바디에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
name String Required 채널 이름
  • 영문자, 숫자, 특수 문자 '-'를 허용하며, 3~20자 이내로 입력
storageBucketName String Required 스트리밍 영상 저장 버킷 이름
accessPrivateFiles Boolean Optional 버킷 내 비공개 파일 접근 제한 설정 여부
  • true | false (기본값)
    • true: 허용
    • false: 제한
  • 허용 시 비공개 파일도 스트리밍 가능
protocolList Array Required 스트리밍 프로토콜 목록
  • HLS | DASH
  • 중복 선택 가능
encryptionList Array Optional 채널의 콘텐츠 보호 설정: encryptionList
segmentDuration Integer Required 세그먼트당 재생 시간(초)
  • 5~20
  • 세그먼트 재생 시간이 길면 파일 크기가 커지고 로딩이 길어질 수 있음
  • 세그먼트 재생 시간이 짧으면 파일 크기는 작아지지만, 버퍼링이 발생할 수 있음
segmentDurationOption String Optional 세그먼트 분할 방식 설정
  • BASIC (기본값) | VARIABLE
    • BASIC: segmentDuration 설정 간격으로 일정하게 세그먼트 생성
    • VARIABLE: 모든 세그먼트가 키 프레임(keyframe)으로 시작하도록 세그먼트 생성
  • VARIABLE 옵션을 선택한 경우, segmentDuration 값과 실제 생성된 세그먼트 재생 시간에 차이 발생 가능성 존재
  • 안정적인 스트리밍 서비스를 위해서는 BASIC 옵션 사용 권장
createCdn Boolean Required CDN 신규 생성 여부
cdnTypeList Array Optional CDN+
  • createCdn = true인 경우, 필수 입력
  • 현재 자동 채널 생성은 CDN+만 지원하고 있으며, 별도 CDN 생성은 CDN+ 연동 가이드 참조
drm Object Optional Multi DRM 설정
drm.siteId String Conditional 사이트 아이디
drm.contentId String Conditional 콘텐츠 아이디
  • 영문자, 숫자, 특수 문자 '-', '_'를 허용하며, 3~100자 이내로 입력
  • Multi DRM을 설정하는 경우, 필수 입력

encryptionList

encryptionList에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
drmContentId String Optional DRM 콘텐츠 아이디
  • 영문자, 숫자를 허용하며, 3~100자 이내로 입력
  • DRM Key 요청 시 해당 값을 포함해 요청하며, 라이선스(License) 발급 시 필요
drmKeyUrl String Optional DRM Key URL
  • DRM 제공사의 CPIX API URL
  • VOD Station은 공식적으로 Inka Pallyacon DRM의 CPIX v1 API와의 연동을 지원
  • DRM 패키징을 위해 VOD Station은 xml body를 포함해 POST로 요청
  • http(s):// 포함
  • Media Encryption를 설정하는 경우, 불필요
systemIdList Array Optional DRM 시스템 아이디
  • DRM 시스템 고유 식별자
  • 영문자, 숫자, 특수문자 '-'를 허용하며, 공백 없이 1~256자 이내로 입력
  • Media Encryption를 설정하는 경우, 불필요
  • DRM 유형에 맞게 1~2개의 시스템 아이디 포함 필수
drmTypeCode Integer Optional DRM 유형
  • 21 | 22
    • 21: FairPlay
    • 22: Widevine/PlayReady
  • Media Encryption를 설정하는 경우, 불필요
mediaEncryptTypeCode Integer Optional Media Encryption(HLS AES-128) 코드 설정
  • 1 | 2 | 3
    • 1: AES-128
    • 2: Sample-AES
    • 3: CENC
  • drmTypeCode21인 경우, 설정 불가
  • DRM을 설정하는 경우, 불필요
protocol String Required 프로토콜 설정
  • HLS | DASH
    • HLS: FairPlay/Media Encryption
    • DASH: Widevine/PlayReady
참고

송출 영상 보안 설정 관련 필드는 송출 영상 보안 설정을 참조하여 입력해 주십시오.

요청 예시

요청 예시는 다음과 같습니다.

  • 미디어 암호화(MediaEncryption; AES-128) 적용 시
    curl --location --request POST 'https://vod-station.apigw.gov-ntruss.com/api/v2/channels' \
    --header 'x-ncp-apigw-timestamp: {Timestamp}' \
    --header 'x-ncp-iam-access-key: {Access Key}' \
    --header 'x-ncp-apigw-signature-v2: {API Gateway Signature}' \
    --data '{
        "name": "ch-media-encrypt",
        "storageBucketName": "station-000",
        "accessPrivateFiles": true,
        "protocolList": ["HLS"],
        "encryptionList": [
            {
                "protocol": "HLS",
                "mediaEncryptTypeCode": 1
            }
        ],
        "segmentDuration": 10,
        "segmentDurationOption": "BASIC",
        "createCdn": true,
        "cdn": {
            "profileId": ****,
            "regionType": "KOREA",
            "type": "GLOBAL_EDGE"
        }
    }'
    

응답

응답 형식을 설명합니다.

응답 바디

응답 바디에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
content Object - 응답 결과
content.disabled Boolean - Sub Account 비활성화 여부
  • true | false
    • true: 비활성
    • false: 활성
content.id String - 채널 아이디
content.name String - 채널 이름
content.channelStatus String - 채널 상태
  • CREATING | READY | STOPPING | STOPPED | TERMINATING | TERMINATED | FORCE_STOPPING | FORCE_STOPPED | FORCETERMINATING | FORCETERMINATED
    • CREATING: 생성 중
    • READY: 운영 중
    • STOPPING: 정지 중
    • STOPPED: 정지 완료
    • TERMINATING: 삭제 중
    • TERMINATED: 삭제 완료
    • FORCE_STOPPING: 강제 정지 중
    • FORCE_STOPPED: 강제 정지 완료
    • FORCETERMINATING: 강제 삭제 중
    • FORCETERMINATED: 강제 삭제 완료
content.storageBucketName String - 채널이 스트리밍할 영상이 저장되어 있는 버킷 이름
content.segmentDuration Integer - 세그먼트당 재생 시간(초)
content.protocolList Array - 스트리밍 프로토콜 목록
  • HLS | DASH
content.createTime Integer - 채널 생성 시작 일시(초)
  • Unix Timestamp 형식
content.cdnCreatedTime Integer - 채널에 연동하여 자동 생성된 CDN의 생성 일시(초)
  • Unix Timestamp 형식
content.playUrl String - CDN을 통한 재생 URL 템플릿
content.cdnStatus String - 채널에 연동된 CDN의 상태
  • 자동 생성하지 않으면 NOT_FOUND로 표시
content.cdnDomain String - 자동 생성된 CDN+ 도메인
content.cdnServiceName String - 자동 생성된 CDN+ 서비스 이름
content.storageBucketStatus String - 채널에 연동된 Object Storage 버킷의 상태
content.originPath String - 생성한 채널의 원본 경로
  • 별도 CDN 생성 시 사용
content.encryptList Array - 채널의 콘텐츠 보호 설정 정보: encryptList
content.accessPrivateFiles Boolean - 버킷 내 비공개 파일 접근 제한 설정 여부
  • true | false
    • true: 제한
    • false: 허용
  • 허용 시 비공개 파일도 스트리밍 가능
content.encryptedBucketName String - 채널에 연동된 버킷의 암호화된 이름
  • 재생 URL 생성 시 사용
content.segmentDurationOption String - 세그먼트 분할 방식 설정
  • BASIC | VARIABLE
    • BASIC: segmentDuration 설정 간격으로 일정하게 세그먼트 생성
    • VARIABLE: 모든 세그먼트가 키 프레임(keyframe)으로 시작하도록 세그먼트 생성
  • VARIABLE 옵션을 선택한 경우, segmentDuration 값과 실제 생성된 세그먼트 재생 시간에 차이 발생 가능성 존재

encryptList

encryptList에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
drmContentId String - DRM 콘텐츠 아이디
  • DRM Key 요청 시 해당 값을 포함해 요청하며, 라이선스(License) 발급 시 필요
drmKeyUrl String - DRM Key URL
  • DRM 제공사의 CPIX API URL
  • VOD Station은 공식적으로 Inka Pallyacon DRM의 CPIX v1 API와의 연동을 지원
systemIdList Array - DRM 시스템 아이디
  • DRM 시스템 고유 식별자
drmTypeCode Integer - DRM 유형
  • 21 | 22
    • 21: FairPlay
    • 22: Widevine/PlayReady
drmTypeName String - DRM 유형 이름
protocol String - 설정된 프로토콜
  • HLS | DASH
    • HLS: FairPlay/Media Encryption
    • DASH: Widevine/PlayReady
mediaEncryptTypeCode Integer - 설정된 Media Encryption(HLS AES-128) 코드 설정
  • 1 | 2 | 3
    • 1: AES-128
    • 2: Sample-AES
    • 3: CENC
mediaEncryptionTypeName String - 설정된 Media Encryption(HLS AES-128) 타입 이름
  • AES-128 | Sample-AES | CENC

응답 상태 코드

VOD Station API에서 공통으로 사용하는 응답 상태 코드에 대한 정보는 VOD Station 응답 상태 코드를 참조해 주십시오.

응답 예시

응답 예시는 다음과 같습니다.

{
    "content": {
        "disabled": false,
        "id": "vs-20250821095732-*******",
        "name": "ch-media-encrypt",
        "channelStatus": "CREATING",
        "storageBucketName": "station-000",
        "segmentDuration": 10,
        "protocolList": [
            "HLS"
        ],
        "createTime": 1755737852,
        "cdnCreatedTime": 1755737852,
        "playUrl": "https://cpzplvi******.edge.naverncp.com/[protocol]/[Object Storage Bucket(encryption name)]/[path]/[video filename]/[manifest]",
        "cdnStatus": "CREATING",
        "cdnDomain": "cpzplvi******.edge.naverncp.com",
        "cdnServiceName": "edge-vs-20250821095732-*******",
        "storageBucketStatus": "RUNNING",
        "originPath": "vs2-k1.video.media.ntruss.com/2706412/vs-20250821095732-*******",
        "encryptList": [
            {
                "protocol": "HLS",
                "mediaEncryptTypeCode": 1
            }
        ],
        "accessPrivateFiles": true,
        "encryptedBucketName": "*****VzPmKvIthkozoufHw__",
        "segmentDurationOption": "BASIC"
    }
}

송출 영상 보안 설정

생성한 채널에서 송출할 영상 콘텐츠의 보안을 위해 다양한 설정을 지원합니다.

콘텐츠 접근 제어

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/*'
    • 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/*'

콘텐츠 보호

One Click Multi DRM 서비스와 연동하여 Multi DRM을 통해 영상 콘텐츠를 암호화 후 송출하여 불법 복제 및 유통을 방지할 수 있습니다. 채널 생성 시 drm 객체를 통해 간편하게 DRM 기능을 설정할 수 있으며, 선택한 Output Protocol에 따라 Multi DRM이 적용됩니다. DRM 기술별 암호화 방식, 지원 단말, 플랫폼 및 버전 등에 대한 자세한 내용은 VOD Station 사용 가이드DoveRunner(구 PallyCon) 가이드를 참조해 주십시오.

암호화 방식 프로토콜 DRM 유형 암호화 알고리즘 지원 단말
HLS AES-128 HLS - AES-128 MS Edge, IE11, Chrome, Firefox, Opera HLS HTML5
DRM HLS
  • FairPlay: Apple에서 제공하는 DRM 기술 규격으로, 각 HLS 세그먼트를 AES-CBC 방식으로 암호화
SAMPLE-AES Mac/iOS Safari 브라우저, iOS/iPadOS/tvOS 앱, HLS HTML5
DRM DASH
  • PlayReady: Microsoft에서 제공하는 DRM 기술 규격으로, Common Encryption 규격에 따라 AES-128 방식으로 암호화
  • Widevine: Google에서 제공하는 DRM 기술 규격으로, Common Encryption 규격에 따라 AES-128 방식으로 암호화
CENC (Common Encryption) MS Edge, IE11, Chrome, Firefox, Opera DASH HTML5