--- title: "채널 생성" slug: "media-livestation-channel-channelcreate" tags: ["Channel Management", "Live Station"] updated: 2026-10-13T06:00:38Z published: 2026-10-13T10:00:06Z canonical: "api.ncloud-docs.com/media-livestation-channel-channelcreate" --- > ## Documentation Index > Fetch the complete documentation index at: https://api.ncloud-docs.com/llms.txt > Use this file to discover all available pages before exploring further. # 채널 생성 Classic/VPC 환경에서 이용 가능합니다. 방송 송출을 위한 라이브 채널을 생성합니다. ## 요청 요청 형식을 설명합니다. 요청 형식은 다음과 같습니다. | 메서드 | URI | | --- | --- | | POST | /api/v2/channels | ### 요청 헤더 Live Station API에서 공통으로 사용하는 헤더에 대한 정보는 [Live Station 요청 헤더](/docs/media-livestation#%EC%9A%94%EC%B2%AD%ED%97%A4%EB%8D%94)를 참조해 주십시오. ### 요청 바디 요청 바디에 대한 설명은 다음과 같습니다. | 필드 | 타입 | 필수 여부 | 설명 | | --- | --- | --- | --- | | `channelName` | String | Required | 채널 이름 - 한글, 영문자, 숫자, 특수 문자 '_'를 조합하여 3~20자 이내로 입력 | | `envType` | String | Optional | 채널 타입 - `REAL` (기본값) \| `DEV` \| `STAGE` - 적용할 서비스 환경 구분자 | | `outputProtocol` | String | Optional | Output Protocol 설정 - `HLS` (기본값) \| `LL_HLS` \| `HLS,DASH` - `HLS`: 안정적이고 호환성 높은 HLS 스트리밍을 이용하기 위한 옵션 - `LL_HLS`: CMAF를 이용한 저지연 HLS 스트리밍을 위한 옵션 - LL-HLS 정식 버전은 Global Edge 연동 환경에서만 지원 - `HLS,DASH`: 일반 HLS와 Dash 모두 스트리밍 가능한 옵션 | | `ingestProtocol` | String | Optional | 송출(Ingest) 프로토콜 - `RTMP` (기본값) \| `SRT` - 채널 생성 시에만 설정할 수 있으며 생성 후 변경 불가 - `SRT`는 `outputProtocol`이 `HLS`인 경우에만 사용 가능 | | `cdn` | Object | Required | CDN 설정 | | `cdn.createCdn` | Boolean | Required | CDN 신규 생성 여부 - `true` \| `false` - `true`: 신규 생성 - `false`: 보유 CDN 사용 | | `cdn.cdnType` | String | Required | CDN 유형 - `GLOBAL_EDGE` (유효 값) | | `cdn.profileId` | Integer | Required | Global Edge 프로필 아이디 - [프로필 목록 조회](/docs/profile-listing) 참조 | | `cdn.regionType` | String | Conditional | Global Edge 서비스 지역 - `KOREA` \| `JAPAN` \| `GLOBAL` - `KOREA`: 한국 - `JAPAN`: 일본 - `GLOBAL`: 글로벌 - `cdn.createCdn`이 `true`인 경우, 필수 입력 | | `cdn.cdnInstanceNo` | Integer | Conditional | Global Edge 인스턴스 아이디 - [엣지 목록 조회](/docs/edge-listing) 참조 - `cdn.createCdn`이 `false`인 경우, 필수 입력 | | `qualitySetId` | Integer | Required | 화질 설정 아이디 - [화질 설정 목록 조회](/docs/media-livestation-qualitysetting-qualitysettinglist) 참조 - `outputProtocol`이 `LL_HLS`인 경우, 저지연(Low Latency)용 화질 설정만 선택 가능 | | `useDvr` | Boolean | Required | 타임머신 설정 여부 - `true` \| `false` - `true`: 설정 - `false`: 설정 안 함 - 설정 시 송출 중인 라이브 방송을 되돌려 볼 수 있음 | | `immediateOnAir` | Boolean | Optional | 송출 즉시 자동 녹화 설정 여부 - `true` \| `false` - `true`: 자동 - `false`: 수동 | | `timemachineMin` | Integer | Conditional | 타임머신 허용 범위(분) - `360` (유효 값) - `useDvr`이 `true`인 경우, 필수 입력 | | `record` | Object | Required | 녹화 저장 정보 | | `record.format` | String | Conditional | 자동 저장 녹화 타입 - `MP4` \| `HLS` \| `ALL` - 녹화 파일 포맷 지정 - `record.type`이 `AUTO_UPLOAD`인 경우, 필수 입력 | | `record.type` | String | Required | 녹화 저장 설정 - `NO_RECORD` \| `AUTO_UPLOAD` \| `MANUAL_UPLOAD` - `NO_RECORD`: 녹화 안 함 - `AUTO_UPLOAD`: 자동 저장 - `MANUAL_UPLOAD`: 임시 저장 | | `record.bucketName` | String | Conditional | 녹화 파일 저장 버킷 이름 - [ListBuckets](/docs/storage-objectstorage-listbuckets) 참조 - `record.type`이 `AUTO_UPLOAD`인 경우, 필수 입력 | | `record.filePath` | String | Conditional | 저장 상세 경로 - `/`로 시작 - `record.type`이 `AUTO_UPLOAD`인 경우, 필수 입력 | | `record.accessControl` | String | Conditional | 녹화 파일 저장 버킷 공개 범위 - `PRIVATE` (기본값) \| `PUBLIC_READ` - `PRIVATE`: 비공개 - `PUBLIC_READ`: 공개 - `record.type`이 `AUTO_UPLOAD`인 경우, 필수 입력 | | `isStreamFailOver` | Boolean | Optional | 송출 이중화 설정 여부 - `true` \| `false` - `true`: 사용 - `false`: 사용 안 함 - 사용 시 반드시 메인 스트림 먼저 송출 | | `drmEnabledYn` | Boolean | Required | Multi DRM 사용 여부 - `true` \| `false` - `true`: 사용 - `false`: 사용 안 함 | | `drm` | Object | Conditional | Multi DRM 설정 - `drmEnabledYn`이 `true`인 경우, 필수 입력 | | `drm.siteId` | String | Conditional | 사이트 아이디 - [사이트 목록 조회](/docs/site-list) 참조 | | `drm.contentId` | String | Conditional | 콘텐츠 아이디 - 영문자, 숫자, 특수 문자 '-', '_'를 조합하여 3~100자 이내로 입력 | | `subtitle` | Object | Optional | 실시간 자동 자막 설정 - `outputProtocol`이 `HLS`인 경우에만 사용 가능 - 입력하지 않거나 `null`인 경우, 자막 미설정 | | `subtitle.secretKey` | String | Conditional | 자막 서비스 키 - 실시간 자동 자막을 사용하는 경우, 필수 입력 - `null` 입력 불가 | | `subtitle.sourceLang` | String | Conditional | 원본 음성 언어 - `KO` \| `EN` \| `JA` - `KO`: 한국어 - `EN`: 영어 - `JA`: 일본어 - 실시간 자동 자막을 사용하는 경우, 필수 입력 | | `subtitle.translateToLang` | Array | Conditional | 자막 번역 언어 목록 - `KO` \| `EN` \| `JA` 중 1개 이상 입력 - 실시간 자동 자막을 사용하는 경우, 필수 입력 | 참고 요청 바디 입력 시 다음 내용을 참고해 주십시오. - 원활한 LL-HLS 채널 사용을 위해 키 프레임은 1초로 설정하는 것을 권장합니다. 자세한 내용은 [권장 송출 옵션](https://guide.ncloud-docs.com/docs/livestation-stream#%EA%B6%8C%EC%9E%A5-%EC%86%A1%EC%B6%9C-%EC%98%B5%EC%85%98)을 참조해 주십시오. - 송출 영상 보안 설정 관련 필드는 [송출 영상 보안 설정](/docs/media-livestation-channel-channelcreate#%EC%86%A1%EC%B6%9C%EC%98%81%EC%83%81%EB%B3%B4%EC%95%88%EC%84%A4%EC%A0%95)을 참조하여 입력해 주십시오. 주의 - Live Station 서비스를 통해 변환된 영상은 네이버 클라우드 플랫폼의 Global Edge 서비스를 통해 시청자에게 전송됩니다. 따라서 Live Station 서비스를 통해 방송 송출 시 Global Edge 이용 요금이 별도 부과됩니다. - 다음 조건 중 하나에 해당하는 CDN만 연동할 수 있습니다. 조건에 맞지 않는 CDN을 연동하면 라이브 방송을 안정적으로 재생할 수 없습니다. - 라이브 채널 생성 과정에서 생성된 CDN - Live Station 서비스를 연동할 수 있도록 필수 설정이 되어 있는 CDN - 연동할 채널에 할당된 원본 도메인 및 전용 경로가 설정된 CDN - 다음과 같이 설정된 CDN - 원본 통신의 프로토콜: HTTPS(443 포트) - Forward Host Header: Origin Hostname - Cache Key Hostname: Incoming Host Header - Caching Option: 원본의 Cache-Control 헤더 우선 - Force Revalidation of Stale Object: 유효한 콘텐츠만 제공 ### 요청 예시 요청 예시는 다음과 같습니다. ``` curl --location --request POST 'https://livestation.apigw.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}' \ --header 'x-ncp-region_code: KR' \ --header 'Content-Type: application/json' \ --data '{ "channelName": "subtitlechannel", "envType": "DEV", "outputProtocol": "HLS", "ingestProtocol": "RTMP", "cdn": { "createCdn": true, "cdnType": "GLOBAL_EDGE", "profileId": 4207, "regionType": "KOREA" }, "qualitySetId": {Quality Set ID}, "useDvr": true, "immediateOnAir": true, "timemachineMin": 360, "record": { "format": "MP4", "type": "AUTO_UPLOAD", "bucketName": "mybucket", "filePath": "/livestation", "accessControl": "PRIVATE" }, "isStreamFailOver": true, "drmEnabledYn": false, "subtitle": { "secretKey": "{Subtitle Secret Key}", "sourceLang": "KO", "translateToLang": ["EN", "JA"] } }' ``` ## 응답 응답 형식을 설명합니다. ### 응답 바디 응답 바디에 대한 설명은 다음과 같습니다. | 필드 | 타입 | 필수 여부 | 설명 | | --- | --- | --- | --- | | `content` | Object | - | 응답 결과 | | `content.channelName` | String | - | 채널 이름 | | `content.cdn` | Object | - | CDN 설정 | | `content.cdn.createCdn` | Boolean | - | CDN 신규 생성 여부 - `true` \| `false` - `true`: 신규 생성 - `false`: 보유 CDN 사용 | | `content.cdn.cdnType` | String | - | CDN 유형 - `GLOBAL_EDGE` (유효 값) | | `content.cdn.cdnInstanceNo` | Integer | - | Global Edge 인스턴스 아이디 | | `content.cdn.profileId` | Integer | - | Global Edge 프로필 아이디 | | `content.cdn.regionType` | String | - | Global Edge 서비스 지역 - `KOREA` \| `JAPAN` \| `GLOBAL` - `KOREA`: 한국 - `JAPAN`: 일본 - `GLOBAL`: 글로벌 | | `content.qualitySetId` | Integer | - | 화질 설정 아이디 | | `content.useDvr` | Boolean | - | 타임머신 설정 여부 - `true` \| `false` - `true`: 설정 - `false`: 설정 안 함 | | `content.immediateOnAir` | Boolean | - | 송출 즉시 자동 녹화 설정 여부 - `true` \| `false` - `true`: 자동 - `false`: 수동 | | `content.timemachineMin` | Integer | - | 타임머신 허용 범위(분) | | `content.channelId` | String | - | 채널 아이디 | | `content.uploadPath` | String | - | 녹화 파일 업로드 경로 | | `content.envType` | String | - | 채널 타입 - `DEV` \| `STAGE` \| `REAL` | | `content.record` | Object | - | 녹화 저장 정보 | | `content.record.type` | String | - | 녹화 저장 설정 - `NO_RECORD` \| `AUTO_UPLOAD` \| `MANUAL_UPLOAD` - `NO_RECORD`: 녹화 안 함 - `AUTO_UPLOAD`: 자동 저장 - `MANUAL_UPLOAD`: 임시 저장 | | `content.record.bucketName` | String | - | 녹화 파일 저장 버킷 이름 | | `content.record.filePath` | String | - | 저장 상세 경로 | | `content.record.format` | String | - | 자동 저장 녹화 타입 - `MP4` \| `HLS` \| `ALL` | | `content.record.accessControl` | String | - | 녹화 파일 저장 버킷 공개 범위 - `PRIVATE` \| `PUBLIC_READ` - `PRIVATE`: 비공개 - `PUBLIC_READ`: 공개 | | `content.outputProtocol` | String | - | Output Protocol | | `content.origin` | Object | - | 원본 정보 | | `content.origin.originDomain` | String | - | 원본 도메인 | | `content.origin.originPath` | String | - | 원본 경로 | | `content.isStreamFailOver` | Boolean | - | 송출 이중화 설정 여부 - `true` \| `false` - `true`: 사용 - `false`: 사용 안 함 | | `content.drmEnabledYn` | Boolean | - | Multi DRM 사용 여부 - `true` \| `false` - `true`: 사용 - `false`: 사용 안 함 | | `content.drm` | Object | - | Multi DRM 설정 - `content.drmEnabledYn`이 `true`인 경우, 하위 정보 표시 | | `content.drm.siteId` | String | - | 사이트 아이디 | | `content.drm.contentId` | String | - | 콘텐츠 아이디 | | `content.ingestProtocol` | String | - | 송출(Ingest) 프로토콜 - `RTMP` \| `SRT` | | `content.subtitle` | Object | - | 실시간 자동 자막 설정 정보 - 실시간 자동 자막 설정 시 표시 | | `content.subtitle.secretKey` | String | - | 자막 서비스 키 | | `content.subtitle.sourceLang` | String | - | 원본 음성 언어 - `KO` \| `EN` \| `JA` | | `content.subtitle.translateToLang` | Array | - | 자막 번역 언어 목록 - `KO` \| `EN` \| `JA` | ### 응답 상태 코드 Live Station API에서 공통으로 사용하는 응답 상태 코드에 대한 정보는 [Live Station 응답 상태 코드](/docs/media-livestation#%EC%9D%91%EB%8B%B5%EC%83%81%ED%83%9C%EC%BD%94%EB%93%9C)를 참조해 주십시오. ### 응답 예시 응답 예시는 다음과 같습니다. ``` { "content": { "channelName": "testchannel", "cdn": { "createCdn": true, "cdnType": "GLOBAL_EDGE", "cdnInstanceNo": 1***2, "profileId": 4207, "regionType": "KOREA" }, "qualitySetId": 2585, "useDvr": true, "immediateOnAir": true, "timemachineMin": 360, "channelId": "ls-20250818******-UbUBe", "uploadPath": "/mybucket/livestation", "envType": "DEV", "record": { "type": "AUTO_UPLOAD", "bucketName": "mybucket", "filePath": "/livestation", "format": "MP4", "accessControl": "PRIVATE" }, "outputProtocol": "HLS", "origin": { "originDomain": "*****.video.media.ntruss.com", "originPath": "27***85" }, "isStreamFailOver": true, "drmEnabledYn": false, "ingestProtocol": "RTMP", "subtitle": { "secretKey": "a3******************************9f", "sourceLang": "KO", "translateToLang": ["EN", "JA"] } } } ``` ## 송출 영상 보안 설정 생성한 채널에서 송출할 영상 콘텐츠의 보안을 위해 다양한 설정을 지원합니다. ### 콘텐츠 접근 제어 Global Edge 서비스와 연동하여 Global Edge의 콘텐츠 인증 제어를 통해 송출 영상 콘텐츠의 접근을 제한할 수 있습니다. 콘텐츠 인증 제어 방식에는 Signed URL, JSON Web Token이 있습니다. 방식별 사용 방법은 Global Edge 사용 가이드의 [Signed URL](https://guide.ncloud-docs.com/docs/globaledge-signedurl), [JSON Web Token](https://guide.ncloud-docs.com/docs/globaledge-jwt)을 참조해 주십시오. - 인증 토큰 발급 시 Signed URL 방식은 ACL에, JSON Web Token 방식은 path에 와일드카드 경로를 입력해야 합니다. - 와일드카드 경로: /live/video/{channelId}/* - Global Edge의 캐시 설정 중 Edge Auth를 생성한 채널의 Output Protocol에 맞게 설정해야 합니다. 설정 방법은 Global Edge API 가이드의 [엣지 수정](/docs/edge-edit)을 참조해 주십시오. - 인증 제외 확장자 - 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 ### 콘텐츠 보호 One Click Multi DRM 서비스와 연동하여 Multi DRM으로 영상 콘텐츠를 암호화한 후 송출하면 불법 복제 및 유통을 방지할 수 있습니다. 채널 생성 시 `drm` 객체를 통해 간편하게 DRM 기능을 설정할 수 있으며, 선택한 Output Protocol에 따라 Multi DRM이 적용됩니다. DRM 기술별 암호화 방식, 지원 단말, 플랫폼 및 버전 등에 대한 자세한 내용은 [DoveRunner(구 PallyCon) 가이드](https://doverunner.com/content-security/multi-drm/)를 참조해 주십시오. Output Protocol별 Multi DRM 적용 방식은 다음과 같습니다. | 암호화 방식 | 프로토콜 | DRM 유형 | 암호화 알고리즘 | 지원 단말 | | --- | --- | --- | --- | --- | | DRM | HLS | - FairPlay: Apple에서 제공하는 DRM 기술 규격으로, 각 HLS 세그먼트를 AES-CBC 방식으로 암호화 | AES-CBC | macOS/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) | Microsoft Edge, Chrome, Firefox, Opera DASH HTML5 | 참고 - One Click Multi DRM 서비스 연동 시 Single-key 패키징만 지원합니다. - Passthrough 화질이 포함된 화질 설정을 사용하는 채널은 DRM 서비스를 지원하지 않습니다.