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.

コンテンツ認証

Prev Next

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

再生ソースに Secure Tokenを適用し、DRMを設定する方法について説明します。

サポートプラットフォーム: Android iOS

参考

現在の機能は実機のみで動作します。(シミュレータには非対応)

Secure Token

token オプションで再生ソースに Secure Tokenを適用して OneTimeUrlをサポートします。playerRef.current.tokenChange()で動画の再生中に中断することなく Secure Tokenを交換できます。

const playerRef = useRef(null);

return (
  <VpePlayer
    ref={playerRef}
    options={{
      playlist: [
        { file: 'https://CDNドメイン/example_video_01.mp4' },
      ],
      token: 'token=st=1675320871~exp=1675320901~acl=....', // Secure Token
    }}
  />
);

//トークンアップデート — 再生中に新規トークンに交換
playerRef.current.tokenChange('token=st=1675320871~exp=1675320901~acl=....');

PallyCon DRM連携

PallyConライセンスサーバに直接リクエストを行う Doverunner(PallyCon) DRMのユースケースです。

FairPlay

const playerRef = useRef(null);

return (
  <VpePlayer
    ref={playerRef}
    options={{
      playlist: [
        {
          file: 'https://CDNドメイン/example_video_01.m3u8',
          drm: {
            type: 'fairplay',
            licenseServer: 'https://license-global.pallycon.com/ri/licenseManager.do',
            certificateUrl: '{Certificate URL}',
            base64Certificate: true,
            getLicense: async (spc) => {
              const res = await fetch('https://license-global.pallycon.com/ri/licenseManager.do', {
                method: 'POST',
                headers: {
                  'pallycon-customdata-v2': '{FairPlay用 Token}',
                },
                body: spc,
              });
              const ckcBase64 = await res.text();
              return ckcBase64;
            },
          },
        },
      ],
    }}
  />
);

Widevine

const playerRef = useRef(null);

return (
  <VpePlayer
    ref={playerRef}
    options={{
      playlist: [
        {
          file: 'https://CDNドメイン/example_video_01.mpd',
          drm: {
            type: 'widevine',
            licenseServer: 'https://license-global.pallycon.com/ri/licenseManager.do',
            getLicense: async (spc) => {
              const res = await fetch('https://license-global.pallycon.com/ri/licenseManager.do', {
                method: 'POST',
                headers: {
                  'Content-type': 'application/x-www-form-urlencoded',
                  'pallycon-customdata-v2': '{Widevine用 Token}',
                },
                body: spc,
              });
              const ckcBase64 = await res.text();
              return ckcBase64;
            },
          },
        },
      ],
    }}
  />
);

One Click Multi DRM連携

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

FairPlay

const playerRef = useRef(null);

return (
  <VpePlayer
    ref={playerRef}
    options={{
      playlist: [
        {
          file: 'https://CDNドメイン/example_video_01.m3u8',
          drm: {
            type: 'fairplay',
            licenseServer: '{License URL}',
            certificateUrl: '{Certificate URL}',
            certificateRequestHeader: {
              "x-ncp-region_code": "KR",
              "x-ncp-iam-access-key": accessKey,
              "x-ncp-apigw-timestamp": timestamp,
              "x-ncp-apigw-signature-v2": signature,
              "accept": "application/json",
            },
            base64Certificate: true,
            getLicense: async (spc) => {
              const res = await fetch('{License URL}', {
                method: 'POST',
                headers: {
                  "x-ncp-region_code": "KR",
                  "x-ncp-iam-access-key": accessKey,
                  "x-ncp-apigw-timestamp": timestamp,
                  "x-ncp-apigw-signature-v2": signature,
                  "x-drm-token": "{One Click Multi DRM FPS TOKEN}",
                },
                body: spc,
              });
              const ckcBase64 = await res.text();
              return ckcBase64;
            },
          },
        },
      ],
    }}
  />
);

Widevine

const playerRef = useRef(null);

return (
  <VpePlayer
    ref={playerRef}
    options={{
      playlist: [
        {
          file: 'https://CDNドメイン/example_video_01.m3u8',
          drm: {
            type: 'widevine',
            licenseServer: '{License URL}',
            getLicense: async (spc) => {
              const res = await fetch('{License URL}', {
                method: 'POST',
                headers: {
                  "x-ncp-region_code": "KR",
                  "x-ncp-iam-access-key": accessKey,
                  "x-ncp-apigw-timestamp": timestamp,
                  "x-ncp-apigw-signature-v2": signature,
                  "x-drm-token": "{One Click Multi DRM FPS TOKEN}",
                },
                body: spc,
              });
              const ckcBase64 = await res.text();
              return ckcBase64;
            },
          },
        },
      ],
    }}
  />
);