--- title: "DRM の適用" slug: "vpe-tv-drm" updated: 2026-09-17T09:22:05Z published: 2026-09-17T09:22:05Z canonical: "guide.ncloud-docs.com/vpe-tv-drm" stale: true --- > ## Documentation Index > Fetch the complete documentation index at: https://guide.ncloud-docs.com/llms.txt > Use this file to discover all available pages before exploring further. # DRM の適用 Classic/VPC環境で利用できます。 NAVERクラウドプラットフォームの One Click Multi DRMを TV SDKで利用し、Widevine(Android TV)と FairPlay(tvOS)を一度に設定する方法、および PallyCon DRMのテスト方法をご案内します。 注意 DRMはシミュレータやエミュレータでは動作しません。必ず実デバイスでテストしてください。 ## One Click Multi DRM One Click Multi DRMは、Widevineと FairPlayを一度に設定できるマルチ DRM機能です。TV SDKとの連携方法は、次の通りです。 ### 動作原理 TV SDKは、**ネイティブビデオエンジン(ExoPlayer/AVPlayer)**を使用して HLS/DASHを直接再生します。SDKはプラットフォームに応じて自動的に Widevine(Android TV)または FairPlay(tvOS)を選択します。 | プラットフォーム | DRM | プロトコル | | --- | --- | --- | | Android TV / Fire TV | Widevine | DASH | | Apple TV (tvOS) | FairPlay | HLS | ### NAVERクラウドプラットフォーム One Click Multi DRMのユースケース `https://vpe-api.sgrsoft.com/api/drmTest` エンドポイントを呼び出して DRM情報を取得した後、プレイヤーのオプションに渡します。 ``` import React, { useEffect, useState } from 'react'; import { View, StyleSheet } from 'react-native'; import { VpePlayer } from '@sgrsoft/vpe-reactnative-tv-sdk'; export default function OneClickMultiDrmExample() { const [options, setOptions] = useState(null); useEffect(() => { fetch('https://vpe-api.sgrsoft.com/api/drmTest') .then((res) => res.json()) .then((data) => setOptions(data)); }, []); if (!options) { return ; } return ( { /* navigation.goBack() */ }} /> ); } const styles = StyleSheet.create({ container: { flex: 1, backgroundColor: '#000' }, }); ``` ### Ncloud DRM Helperのインストール(バックエンド) ``` npm i vpe-drm-helper ``` - Ncloud DRM Helperは、DRM再生ソースを作成するために使用されます。 - Ncloud API Keyが使用されます。 - Ncloud Sub Accountを使用して、DRM専用 API Keyを作成・使用します。 - 再生ソースの作成タスクは、必ずバックエンドで行う必要があります。 ### Ncloud DRM Serverの実装(バックエンド) ``` import express from 'express'; import vpeDrmHelper from 'vpe-drm-helper'; const app = express(); const port = 3000; const NDRM = new vpeDrmHelper(); NDRM.isGov = false; // 公共官公庁向けクラウドプラットフォームの使用有無を設定(デフォルト値: false) NDRM.setUserId('test-user'); NDRM.setSiteId('{SITEID}'); NDRM.setApiKey('{Ncloud API accessKey}', '{Ncloud API secretKey}'); app.get('/drm-source', (req, res) => { const drmSource = NDRM.drmSourceHelper({ dash: '{DASH再生ソース}', hls: '{HLS再生ソース}', }, '{contentId}'); res.json(drmSource); }); app.listen(port, () => { console.log(`Server is running on http://localhost:${port}`); }); ``` 注意 {SITEID}および{contentId}は、DRMライセンストークンの作成に必要な値ですので、外部に漏洩しないようご注意ください。 APIキーは、DRM権限のみが追加されたキーを使用してください。Master APIキーは絶対に使用しないでください。 ### レスポンスの JSON構造 DRM Helperが返す JSONには、Widevine、PlayReady、FairPlayの各キーがすべて含まれています。TV SDKは、プラットフォームに応じて自動的に適切な DRMを選択します。 ``` { "playlist": [ { "drm": { "com.widevine.alpha": { "src": "https://example.edge.naverncp.com/dash/.../manifest.mpd", "licenseUri": "https://multi-drm.apigw.ntruss.com/api/v1/license", "licenseRequestHeader": { ... } }, "com.apple.fps": { "src": "https://example.edge.naverncp.com/hls/.../index.m3u8", "certificateUri": "https://multi-drm.apigw.ntruss.com/api/v1/license/fairPlay", "licenseUri": "https://multi-drm.apigw.ntruss.com/api/v1/license", "licenseRequestHeader": { ... } } }, "poster": "https://example.com/poster.jpg", "description": { "title": "DRM保護動画", "created_at": "2024.07.13" } } ], "autostart": true } ``` ### トークンの更新 再生中に DRMトークンの有効期限が切れた場合は、refメソッドを使用して更新できます。 ``` const playerRef = useRef(null); // 再生中のトークンを更新 playerRef.current?.tokenChange('NEW_TOKEN_VALUE'); ``` ## PallyCon DRMテスト PallyCon DRMとの連携を TV SDKで迅速に検証できるテストエンドポイントを提供します。別途の DRMライセンスを発行することなく、Widevine(Android TV)と FairPlay(tvOS)をすぐにテストできます。 注意 テストエンドポイントは PallyCon DEMO環境を使用するため、本番環境では使用できません。 ### テストエンドポイント ``` GET https://vpe-api.sgrsoft.com/api/drmTestPallycon ``` ### プレイヤー連携 エンドポイントから受け取ったレスポンスをそのままプレイヤーのオプションに渡すと、DRM再生が開始されます。 ``` import React, { useEffect, useState } from 'react'; import { View, StyleSheet } from 'react-native'; import { VpePlayer } from '@sgrsoft/vpe-reactnative-tv-sdk'; const DRM_API = 'https://vpe-api.sgrsoft.com/api/drmTestPallycon'; export default function PallyconDrmTest() { const [options, setOptions] = useState(null); useEffect(() => { fetch(DRM_API) .then((res) => res.json()) .then((data) => setOptions(data)); }, []); if (!options) { return ; } return ( { /* navigation.goBack() */ }} /> ); } const styles = StyleSheet.create({ container: { flex: 1, backgroundColor: '#000' }, }); ``` ### DRMタイプ別 TVプラットフォームのサポート DRMタイプ別プロトコルとサポートプラットフォームは、次の通りです。 | DRM | プロトコル | サポートプラットフォーム | | --- | --- | --- | | com.widevine.alpha | DASH | Android TV, Fire TV | | com.apple.fps | HLS | Apple TV (tvOS) |