コンテンツ認証
    • PDF

    コンテンツ認証

    • PDF

    Article Summary

    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サービスは 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方式で暗号化します。
      • サポート状況

        ブラウザWidevinePlayReadyFairPlay
        Internet Explorer(11+ on Windows 8.1+)XO
        (MPEG-DASH)
        X
        Microsoft Edge(Windows 10+)XO
        (MPEG-DASH)
        X
        Chrome(35+ on Windows 7.0+, 57+ on Android 4.4+)O
        (MPEG-DASH)
        XX
        Firefox(47+ on Windows 7.0+)O
        MPEG=DASH
        XX
        Safari(8+ on Mac OS 10.10+, 11.2+ on iOS 11.2+)XXO
        (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_CODEO利用中のサービスリージョンコード
      • 韓国: KR
      • シンガポール: SGN
      • 米国: USWN
      • 日本: JPN
      • 香港: HK
      • ドイツ: DEN
      X-NCP-IAM-ACCESS-KEYOポータルまたは Sub Accountが発行した Access Key ID
      X-NCP-APIGW-TIMESTAMPO1970年1月1日00:00:00協定世界時(UTC)からの経過時間をミリ秒(Millisecond)で表し、API Gatewayサーバとの時間差が5分以上の場合は無効なリクエストとみなす
      X-NCP-APIGW-SIGNATURE-V2OAccess Key ID値と Secret Keyで暗号化した署名で、HMAC暗号化アルゴリズムは HmacSHA256を使用

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

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

    • Endpoint

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

      項目要否説明
      X-DRM-TOKENOOne Click Multi DRMライセンス発行に必要なデータを含む暗号化されたトークン値
      X-NCP-REGION_CODEO利用中のサービスリージョンコード
      • 韓国: KR
      • シンガポール: SGN
      • 米国: USWN
      • 日本: JPN
      • 香港: HK
      • ドイツ: DEN
      X-NCP-IAM-ACCESS-KEYOポータルまたは Sub Accountが発行した Access Key ID
      X-NCP-APIGW-TIMESTAMPO1970年1月1日00:00:00協定世界時(UTC)からの経過時間をミリ秒(Millisecond)で表し、API Gatewayサーバとの時間差が5分以上の場合は無効なリクエストとみなす
      X-NCP-APIGW-SIGNATURE-V2OAccess 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',
                }
            ],
        });
    });
    

    この記事は役に立ちましたか?

    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.