- 印刷する
- PDF
チャンネルの作成
- 印刷する
- PDF
VOD Stationはチャンネルを作成するための APIを提供します。また、作成したチャンネルの照会のためのチャンネルリスト照会 APIとチャンネル情報照会 APIを提供します。
VOD Stationと連携された Global Edgeのコンテンツ認証(Signed URL/JWT)制御使用時の注意事項は次の通りです。
- Global Edgeのキャッシュ設定の際は、Edge Authを以下のように設定します。Global Edge Edge Auth設定の変更方法の詳細は、APIガイドをご参照ください。
- 認証除外拡張子
- .ts、.mp4、.m4s、.vtt、.key
- 認証トークンをソースに伝達する拡張子
- .m3u8、.mpd
- 認証除外拡張子
- 認証トークン発行の際は、SignedURLに acl入力フィールド、JWTに path入力フィールドがあり、それぞれに wildcard pathを入力します。認証トークン発行方法の詳細は、ご利用ガイドをご参照ください。
- 単一ビットレートの再生: '/[protocol]/[encryptedBucketName]/[path]/[video filename]/*'
- 例)
- HLS: https://example.edge.navercorp.com/hls/guide/vod-5100k.mp4/index.m3u8
- wildcard path: '/hls/guide/vod-5100k.mp4/*'
- DASH: https://example.edge.navercorp.com/dash/guide/vod-5100k.mp4/index.m3u8
- wildcard path: '/dash/guide/vod-5100k.mp4/*'
- HLS: https://example.edge.navercorp.com/hls/guide/vod-5100k.mp4/index.m3u8
- 例)
- Adaptiveビットレートの再生: '/[protocol]/[encryptedBucketName]/[path]/[prefix],[video filenames],[suffix].smil/*'
- 例)
- HLS再生アドレス: https://example.edge.navercorp.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.edge.navercorp.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.edge.navercorp.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.ntruss.com/api/v2/channels
リクエストヘッダ
ヘッダ名 | 説明 |
---|---|
x-ncp-region_code | NAVERクラウドプラットフォームの 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 | NAVERクラウドプラットフォームポータルから発行された Access Key IDx-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 | | | チャンネルと連携する NAVERクラウドプラットフォームの Object Storageバケット名 |
| accessPrivateFiles | No | Boolean | | | 連携対象 Object Storageのバケット内非公開ファイルに対する 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連携が必須
チャンネルを作成する際に一緒に作成するか、別途作成して使用することができる |
| cdn | Optional | Object | Global Edgeを自動作成する場合、リクエストは必須です。 | ||
| cdn.profileId | Optional | Integer | 新規作成する Global Edgeのプロファイル ID | |Global Edgeを作成するプロファイル ID |
|cdn.regionType | Optional | String | Global Edgeを連携する場合に利用します。 | KOREA、JAPAN、GLOBAL |Global Edgeのサービス地域|
| cdn.type | Optional | String | Global Edgeを連携する場合に利用します。 |GLOBAL_EDGE |Global Edgeの新規作成のためのタイプ|
| drm | No | Object | One Click Multi DRM選択時、必ず入力 | | |
| drm.siteId | No | String | One Click Multi DRM選択時、必ず入力 | | |
| drm.contentId | No | String | One Click Multi DRM選択時、必ず入力 | contentIdは再生しようとするコンテンツの固有 IDで、DRMパッケージング時に使用。英数字、記号の「-」(ハイフン)、「_」(アンダースコア)のみ使用して3~100文字以内で入力可能 | |
レスポンス
| フィールド名 | タイプ | 説明 | 備考 |
|--- |--- |--- |--- |
| content | Object | VOD Station OPEN APIレスポンスオブジェクト | |
| content.id | String | 作成されたチャンネルの ID | |
| content.name | Object | チャンネル名 | |
| content.channelStatus | Integer | チャンネルの現在の状態 | CREATING、READY、STOPPING、STOPPED、TERMINATING、TERMINATED、FORCE_STOPPING、FORCE_STOPPED、FORCETERMINATING、FORCETERMINATED |
| 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 | 自動作成された Global Edgeのドメイン | |
| content.cdnServiceName | String | 自動作成された Global Edgeのサービス名 | |
| content.cdn | Object | 自動作成された Global Edge情報 | |
| content.cdn.cdnType | String | 自動作成された CDNのタイプ | |
| content.cdn.cdnDomain | String | 自動作成された Global Edgeのドメイン | |
| content.cdn.cdnServiceName | String | 自動作成された Global Edgeのサービス名 | |
| content.cdn.profileId | String | 自動作成された Global Edgeのプロファイル ID | |
| content.cdn.regionType | String | 自動作成された Global Edgeのサービス地域 | |
| content.cdn.cdnInstanceNo | Integer | 自動作成された Global Edgeのインスタンス情報 | |
| 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 | |
| content.drm | Object | VOD Stationを利用した DRM Encryption設定 | |
| content.drm.siteId | String | One Click Multi DRMサービスで作成した site id | |
| content.drm.contentId | String | DRM Encryption適用対象コンテンツの固有 ID
DRMパッケージングに使用され、英数字、記号の「-」(ハイフン)、「_」(アンダースコア)のみ使用して3~100文字以内で入力できます。| |
| error | Object | エラーレスポンスコードとメッセージ | |
| error.errorCode | String | エラーレスポンスコード | |
| error.message | String | エラーレスポンスメッセージ | |
| error.details | String | error messageの詳細説明
api gatewayエラー発生時のレスポンス | |
例
リクエスト例
POST https://vodstation.apigw.ntruss.com/api/v2/channels
POST /api/v2/channels
HOST: vodstation.apigw.ntruss.com
Content-Type: application/json
x-ncp-region_code:KR
x-ncp-apigw-timestamp:1521787414578
x-ncp-iam-access-key:6uxz1nKkcYwUjWRG5Q1V7NsW0i5jErlu2NjBXXgy
x-ncp-apigw-signature-v2:iJFK773KH0WwQ79PasqJ+ZGixtpDQ/abS57WGQdld2M=
Request body (Global Edge)
{
"accessPrivateFiles": false,
"cdn": {
"profileId": 681,
"regionType": "KOREA",
"type": "GLOBAL_EDGE"
},
"createCdn": true,
"name": "ey-api-gedge-0628",
"protocolList": [
"HLS","DASH"
],
"segmentDuration": 5,
"segmentDurationOption": "BASIC",
"storageBucketName": "eytestbucket"
}
Reqeust body (non DRM)
{
"cdn": {
"profileId": 681,
"regionType": "KOREA",
"type": "GLOBAL_EDGE"
},
"createCdn": true,
"name": "api-guide",
"protocolList": [
"HLS", "DASH"
],
"segmentDuration": 5,
"storageBucketName": "vodstation-bucket"
}
Request body (One Click Multi DRM using MediaEncryption and Widevine/PlayReady)
{
"createCdn": true,
"name": "api-guide-drm",
"protocolList": [
"HLS", "DASH"
],
"segmentDuration": 5,
"segmentDurationOption": "BASIC",
"accessPrivateFiles": true,
"storageBucketName": "vodstaton-test",
"drm" : {
"siteId" : "ABCD",
"contentId" : "abc-2344-dfd"
}
}
Request body (DRM using MediaEncryption and Widevine/PlayReady)
{
"cdn": {
"profileId": 681,
"regionType": "KOREA",
"type": "GLOBAL_EDGE"
},
"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,
"segmentDurationOption": "BASIC",
"accessPrivateFiles": true,
"storageBucketName": "vodstaton-test"
}
Request body (DRM using FairPlay and Widevine/PlayReady)
{
"cdn": {
"profileId": 681,
"regionType": "KOREA",
"type": "GLOBAL_EDGE"
},
"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)
{
"cdn": {
"profileId": 681,
"regionType": "KOREA",
"type": "GLOBAL_EDGE"
},
"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)
{
"cdn": {
"profileId": 681,
"regionType": "KOREA",
"type": "GLOBAL_EDGE"
},
"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": {
"disabled": false,
"id": "vs-20230628104743-IhwvCgd",
"name": "ey-api-gedge-0628",
"channelStatus": "CREATING",
"storageBucketName": "gjtest",
"segmentDuration": 5,
"protocolList": [
"HLS",
"DASH"
],
"createTime": 1687916863,
"cdnCreatedTime": 1687916864,
"playUrl": "https://kphmlswg1388.beta-edge.naverncp.com/[protocol]/[Object Storage Bucket(encryption name)]/[path]/[video filename]/[manifest]",
"cdnStatus": "CREATING",
"cdnDomain": "kphmlswg1388.beta-edge.naverncp.com",
"cdnServiceName": "edge-vs-20230628104743-IhwvCgd",
"storageBucketStatus": "RUNNING",
"originPath": "beta-vs2-k1.video.media.ntruss.com/86/vs-20230628104743-IhwvCgd",
"encryptList": [
],
"accessPrivateFiles": false,
"encryptedBucketName": "sk3DDQr8sR~23I9msiHAPg__",
"segmentDurationOption": "BASIC",
"cdn": {
"cdnType": "GLOBAL_EDGE",
"cdnDomain": "kphmlswg1388.beta-edge.naverncp.com",
"cdnServiceName": "edge-vs-20230628104743-IhwvCgd",
"profileId": 681,
"regionType": "KOREA",
"cdnInstanceNo": 1388
},
"drm": {
"siteId": "ABCD",
"contentId": "abc-2344-dfd"
}
}
}