コンテンツ認証

Prev Next

Classic/VPC環境で利用できます。

コンテンツ認証ではスクリプトコードを変更して再生ソースに Secure Tokenを適用する方法と、MultiDRMを設定する方法を説明します。

Secure Token

token プロパティで再生ソースに Secure Tokenを適用して OneTimeUrlをサポートします。また、player.tokenChange プロパティで動画の再生中に中断なしに Secure Tokenを交換できます。

参考

Secure Tokenに関する詳細は CDN+ご利用ガイドをご参照ください。

ユースケースは次の通りです。

// 動画(MP4)
new ncplayer('video1', {
  autostart: true,
  playlist: [
    {
      file: 'https://CDN도메인/example_video_01.mp4',
    },
  ],
  token: 'token=st=1675320871~exp=1675320901~acl=....', // Secure Token
});

//トークン交換
player.tokenChange('token=st=1675320871~exp=1675320901~acl=....') //再生中に新規トークンに交換

MultiDRM

playlist.drm プロパティで MultiDRMを設定します。ユースケースは次の通りです。

let player;

document.addEventListener('DOMContentLoaded',  async ()=> {
    await ncplayerDRM('video1',{
        playlist: [
            {
                drm:{
                    'com.apple.fps':{
                        certificateUrl: '{Certificate URL}',
                        licenseUri : 'https://license-global.pallycon.com/ri/licenseManager.do',
                        licenseRequestHeader:{
                            'Content-type': 'application/x-www-form-urlencoded',
                            'pallycon-customdata-v2':'{FairPlay用 Token}'
                        },
                        src : '{hls url}'
                    },
                    'com.widevine.alpha':{
                        licenseUri : 'https://license-global.pallycon.com/ri/licenseManager.do',
                        licenseRequestHeader:{
                            'pallycon-customdata-v2':'{Widevine用 Token}'
                        },
                        src : '{dash url}'
                    },
                    'com.microsoft.playready':{
                        licenseUri : 'https://license-global.pallycon.com/ri/licenseManager.do',
                        licenseRequestHeader:{
                            'pallycon-customdata-v2':'{PlayReady用 Token}'
                        },
                        src : '{dash url}'
                    },
                },
                poster: 'https://nnbkegvqsbcu5297614.cdn.ntruss.com/profile/202207/ae73f3a32b49205fafdc3303c7f0c0b8.png',
                description: {
                    title: "NAVERクラウド",
                    create_at: "2022-12-31",
                    profile_name: "Naver Cloud Platform",
                    profile_image: "https://nnbkegvqsbcu5297614.cdn.ntruss.com/profile/202207/ae73f3a32b49205fafdc3303c7f0c0b8.png
                },
            }
        ],
        controlBtn: {
            play: true,
            fullscreen: true,
            volume: true,
            times: true,
            pictureInPicture: true,
            setting: true,
            subtitle: true
        },
        autostart: false
    });
});
参考
  • MultiDRMを使用するには、HLSと DASHのいずれもサポートするように VOD Stationサービスで2つのチャンネルに構成する必要があります。

  • MultiDRMは SSL/TSLが適用された https環境でのみ動作します。

  • MultiDRMは Widevine、PlayReady、FairPlay(FPS)をサポートします。

  • Video Player Enhancementサービスは DoveRunner(旧 PallyCon) MultiDRMを公式サポートしています。

  • DRM機能を使用するには、事前に外部の DRM供給会社との契約が必要です。

    • DRMのタイプ

      • Widevine: Googleで提供する DRM技術規格として、Common Encryption規格に応じて AES-128方式で暗号化します。
      • PlayReady: Microsoftで提供する DRM技術規格として、Common Encryption規格に応じて AES-128方式で暗号化します。
      • FairPlay: Appleで提供する DRM技術規格として、それぞれの HLSセグメントを Sample-AES方式で暗号化します。
    • サポート状況

      ブラウザ Widevine PlayReady FairPlay
      Internet Explorer(11+ on Windows 8.1+) X O
      (MPEG-DASH)
      X
      Microsoft Edge(Windows 10+) X O
      (MPEG-DASH)
      X
      Chrome(35+ on Windows 7.0+, 57+ on Android 4.4+) O
      (MPEG-DASH)
      X X
      Firefox(47+ on Windows 7.0+) O
      MPEG=DASH
      X X
      Safari(8+ on Mac OS 10.10+, 11.2+ on iOS 11.2+) X X O
      (HLS)
  • Video Player Enhancementサービスは使用中のブラウザがサポートする DRMに応じて状況に合う再生ソース(HLSまたは DASH)を自動で選択します。

One Click Multi DRM

Video Player Enhancementサービスと One Click Multi DRMサービスを連携して DRMを適用できます。
FPS Certificateとライセンス発行をリクエストするための Endpoint(エンドポイント)とリクエストヘッダを確認します。

参考
  • One Click Multi DRMサービスとの連携は、Video Player Enhancementバージョン1.1.1以降から可能です。
  • Apple FairPlayの場合、FPS Certificateとライセンスの署名(X-NCP-APIGW-SIGNATURE-V2)をそれぞれ作成する必要があります。作成に関する詳細については、シグネチャ作成ガイドをご参照ください。

FPS Certificateのリクエスト(Apple FairPlay専用)

FPS Certificateをリクエストするためのエンドポイントとリクエストヘッダは、次の通りです。

  • Endpoint

    GET https://multi-drm.apigw.ntruss.com/api/v1/license/fairplay
    
  • リクエストヘッダ

    項目 必須有無 説明
    X-NCP-REGION_CODE O 利用中のサービスリージョンコード
    • 韓国: KR
    • シンガポール: SGN
    • 米国: USWN
    • 日本: JPN
    • ドイツ: DEN
    X-NCP-IAM-ACCESS-KEY O ポータルまたは Sub Accountが発行した Access Key ID
    X-NCP-APIGW-TIMESTAMP O 1970年1月1日00:00:00協定世界時(UTC)からの経過時間をミリ秒(Millisecond)で表し、API Gatewayサーバとの時間差が5分以上の場合は無効なリクエストとみなす
    X-NCP-APIGW-SIGNATURE-V2 O Access Key ID値と Secret Keyで暗号化した署名で、HMAC暗号化アルゴリズムは HmacSHA256を使用

ライセンス発行のリクエスト(FairPlay, Widevine, PlayReady共用)

ライセンス発行をリクエストするためのエンドポイントとリクエストヘッダは、次の通りです。

  • Endpoint

    POST https://multi-drm.apigw.ntruss.com/api/v1/license
    
  • リクエストヘッダ

    項目 必須有無 説明
    X-DRM-TOKEN O One Click Multi DRMライセンス発行に必要なデータを含む暗号化されたトークン値
    X-NCP-REGION_CODE O 利用中のサービスリージョンコード
    • 韓国: KR
    • シンガポール: SGN
    • 米国: USWN
    • 日本: JPN
    • ドイツ: DEN
    X-NCP-IAM-ACCESS-KEY O ポータルまたは Sub Accountが発行した Access Key ID
    X-NCP-APIGW-TIMESTAMP O 1970年1月1日00:00:00協定世界時(UTC)からの経過時間をミリ秒(Millisecond)で表し、API Gatewayサーバとの時間差が5分以上の場合は無効なリクエストとみなす
    X-NCP-APIGW-SIGNATURE-V2 O Access Key ID値と Secret Keyで暗号化した署名で、HMAC暗号化アルゴリズムは HmacSHA256を使用

ユースケース

One Click Multi DRMを適用するための Apple FairPlayと Widevine/PlayReadyのユースケースは、次の通りです。

  • Apple FairPlay
    document.addEventListener('DOMContentLoaded',  async ()=> {
        await ncplayerDRM('myElement',{
            playlist: [
                {
                    drm:{
                        'com.apple.fps':{
                            certificateUri: '{FPS Certificate Endpoint}',
                            certificateRequestHeader:{
                                'X-NCP-REGION_CODE': 'KR',
                                'X-NCP-IAM-ACCESS-KEY': accessKey,
                                'X-NCP-APIGW-TIMESTAMP': timestamp,
                                'X-NCP-APIGW-SIGNATURE-V2': signature,		 
                            },
                            licenseUri : '{License Endpoint}',
                            licenseRequestHeader:{
                                'X-DRM-TOKEN': '{One Click Multi DRM FPS TOKEN}',
                                'X-NCP-REGION_CODE': 'KR',
                                'X-NCP-IAM-ACCESS-KEY': accessKey,
                                'X-NCP-APIGW-TIMESTAMP': timestamp2,
                                'X-NCP-APIGW-SIGNATURE-V2': signature2,		 
                            },
                            src : 'http://example.com/index.m3u8'
                        }
                    },
                    poster: 'http://example.com/myVideoThumb.png',
                }
            ],
            autostart: true
        });
    });
    
  • Widevine/PlayReady
    document.addEventListener('DOMContentLoaded',  async ()=> {
        await ncplayerDRM('myElement',{
            playlist: [
                {
                    drm:{
                        'com.widevine.alpha':{
                            licenseUri : '{License Endpoint}',
                            licenseRequestHeader:{
                                'X-DRM-TOKEN': '{One Click Multi DRM WIDEVINE TOKEN}',
                                'X-NCP-REGION_CODE': 'KR',
                                'X-NCP-IAM-ACCESS-KEY': accessKey,
                                'X-NCP-APIGW-TIMESTAMP': timestamp2,
                                'X-NCP-APIGW-SIGNATURE-V2': signature2,		 
                            },
                            src : 'http://example.com/index.mpd'
                        },
                        'com.microsoft.playready':{
                            licenseUri : '{License Endpoint}',
                            licenseRequestHeader:{
                                'X-DRM-TOKEN': '{One Click Multi DRM PLAYREADY TOKEN}',
                                'X-NCP-REGION_CODE': 'KR',
                                'X-NCP-IAM-ACCESS-KEY': accessKey,
                                'X-NCP-APIGW-TIMESTAMP': timestamp2,
                                'X-NCP-APIGW-SIGNATURE-V2': signature2,		 
                            },
                            src : 'http://example.com/index.mpd'
                        },
                    poster: 'http://example.com/myVideoThumb.png',
                    }
                }
            ],
            autostart: true
        });
    });
    

DRMテスト

スクリプトコードを作成して DRMテストを行うことができます。

参考

DRMテストを行うには、デフォルトのプレイヤー実行スクリプト(ncplayer())ではなく、別の実行スクリプト(ncplayerDRM())を利用する必要があります。

// DRM専用スクリプトコードを利用します。
// DOMが完全にロードされて実行することで、DRMがエラーなく実行されます。
document.addEventListener('DOMContentLoaded',  async ()=> {
    await ncplayerDRM('video1',{});
})

Widevine/PlayReady

Widevineまたは PlayReadyタイプの DRMをテストするスクリプトは、次の通りです。

参考
  • Widevineまたは PlayReady DRMをテストするには、次の情報が必要です。
    • DASH再生ソースの URL
    • DRMトークン値
  • Widevineは Chromeブラウザ、PlayReadyは Windows OS Edgeブラウザでテストできます。
document.addEventListener('DOMContentLoaded',  async ()=> {
    await ncplayerDRM('video1',{
        playlist: [
            {
                drm:{
                    'com.widevine.alpha':{
                        licenseUri : 'https://license-global.pallycon.com/ri/licenseManager.do',
                        licenseRequestHeader:{
                            'pallycon-customdata-v2':'{Token}'
                        },
                        src : '{dash url}'
                    },
                    'com.microsoft.playready':{
                        licenseUri : 'https://license-global.pallycon.com/ri/licenseManager.do',
                        licenseRequestHeader:{
                            'pallycon-customdata-v2':'{Token}'
                        },
                        src : '{dash url}'
                    },
                },
                poster: 'https://nnbkegvqsbcu5297614.cdn.ntruss.com/profile/202207/ae73f3a32b49205fafdc3303c7f0c0b8.png',
            }
        ],
    });
});

FairPlay(FPS)

FairPlayタイプの DRMをテストするスクリプトは、次の通りです。

参考
  • FairPlay DRMをテストするには、次の情報が必要です。
    • HLS再生ソースの URL
    • Certificate URL(認証 URL)
    • DRMトークン値
  • Mac OS Safariブラウザでテストできます。
document.addEventListener('DOMContentLoaded',  async ()=> {
    await ncplayerDRM('video1',{
        playlist: [
            {
                drm:{
                    'com.apple.fps':{
                        certificateUrl: '{Certificate URL}',
                        licenseUri : 'https://license-global.pallycon.com/ri/licenseManager.do',
                        licenseRequestHeader:{
                            'Content-type': 'application/x-www-form-urlencoded',
                            'pallycon-customdata-v2':'{Token}'
                        },
                        src : '{hls url}'
                    },
                },
                poster: 'https://nnbkegvqsbcu5297614.cdn.ntruss.com/profile/202207/ae73f3a32b49205fafdc3303c7f0c0b8.png',
            }
        ],
    });
});