すべてのプロダクト
Search
ドキュメントセンター

ApsaraVideo VOD:暗号化されたビデオの再生

最終更新日:May 23, 2026

ApsaraVideo VOD と ApsaraVideo Live は、ホットリンク、不正なダウンロード、不正な配布からコンテンツを保護するため、さまざまな動画暗号化方式を提供しています。このトピックでは、ApsaraVideo Player SDK を使用して、Alibaba Cloud 独自の暗号技術 (独自暗号化)、 HLS 暗号化、 DRM 暗号化で暗号化された動画を再生する方法について説明します。

動画暗号化の概要

ApsaraVideo VOD は、ホットリンク、不正なダウンロード、不正な配布から動画を保護するための包括的なコンテンツセキュリティメカニズムを提供します。これには、アクセス制御、URL 署名、リモート認証、動画暗号化、セキュアダウンロードが含まれます。

セキュリティポリシーの詳細については、「概要」をご参照ください。このトピックでは、3つの暗号化方式で暗号化された動画を再生する方法について説明します。次の表に、動画の暗号化に使用できる3つの方式を示します。

セキュリティポリシー

方式

利点

セキュリティレベル

導入の複雑さ

動画暗号化

Alibaba Cloud 独自の暗号化

ApsaraVideo VOD は、独自の暗号化アルゴリズムを使用して、クラウドとデバイスが統合された動画暗号化ソリューションを提供します。これにより、伝送路のセキュリティを確保します。

比較的低い。簡単な設定と ApsaraVideo Player SDK の統合が必要です。

HTTP Live Streaming (HLS) 暗号化

HLS 暗号化は、AES-128 を使用して動画コンテンツを暗号化し、すべての HLS 互換のプレーヤーをサポートしています。ただし、キーが漏洩しやすいという脆弱性があります。

高い。キー管理サービスとトークン発行サービスをセットアップする必要があります。さらに、伝送路のセキュリティを確保する必要があります。

商用 DRM

Apple FairPlay や Google Widevine を含む商用 DRM システムをネイティブにサポートしています。この方式は高いレベルのセキュリティを提供し、ほとんどの著作権者の要件を満たします。

高い。サードパーティの DRM ライセンスサービスとの連携が必要です。ライセンスコールの数に基づいて課金されます (サードパーティの DRM については、該当する課金基準をご参照ください)。

ApsaraVideo Player SDK の互換性

説明
  1. ApsaraVideo Player SDK for Web を使用して暗号化された動画を再生する前に、さまざまなブラウザおよび暗号化タイプとの互換性を確認してください。たとえば、ApsaraVideo Player SDK for Web は、主要なモバイルブラウザで Alibaba Cloud 独自暗号化で暗号化された動画を再生できます。 詳細については、「ブラウザの互換性」および「機能の互換性」をご参照ください。次の表では、✔️ は機能がサポートされていることを示し、❌ はサポートされていないことを示します。

  2. 互換性を確保するために、最新バージョンの ApsaraVideo Player SDK をダウンロードしてください。最新バージョンをダウンロードするには、「SDK の概要」をご参照ください。

  3. 注:HLS は M3U8 フォーマットを使用します

クライアント

再生方法

独自暗号化 (HLS)

ライセンスベースの暗号化 (HLS)

ライセンスベースの暗号化 (MP4)

独自暗号化 (ライブ FLV)

HLS 暗号化

Alibaba Cloud DRM

サードパーティ DRM

Web

UrlSource ベースの再生

✔️

✔️

VidAuth ベースの再生

✔️

✔️

VidSts ベースの再生

✔️

✔️

UrlSource ベースのライブストリーミング

✔️

✔️

LiveStsSource ベースのライブストリーミング

✔️

✔️

✔️

ネイティブ (iOS/Android/Flutter)

UrlSource ベースの再生

✔️

✔️

ApsaraVideo Player SDK v6.17.0 以降が必要です。

✔️

ApsaraVideo Player SDK v6.8.0 以降が必要です。

✔️

✔️

ApsaraVideo Player SDK v7.8.0 以降が必要です。Flutter ではサポートされていません。

VidAuth ベースの再生

✔️

✔️

✔️

VidSts ベースの再生

✔️

✔️

✔️

✔️

Flutter ではサポートされていません。

UrlSource ベースのライブストリーミング

✔️

✔️

ApsaraVideo Player SDK v7.8.0 以降が必要です。Flutter ではサポートされていません。

LiveStsSource ベースのライブストリーミング

✔️

✔️

✔️

✔️

Flutter ではサポートされていません。

暗号化の概要

Alibaba Cloud 動画暗号化 (プライベート暗号化)

Alibaba Cloud 動画暗号化 (プライベート暗号化) は、動画データを暗号化します。動画はローカルデバイスにダウンロードされた後も暗暗号化されたままであるため、悪意のある二次配布、データ漏洩、不正な直リンクを効果的に防止します。詳細については、「Alibaba Cloud 動画暗号化 (プライベート暗号化)」をご参照ください。

Alibaba Cloud Player SDK は、復号ロジックとサーバー側のやり取りを処理します。暗号化トランスコーディングを設定し、SDK を統合するだけで、低コストで暗号化された動画の再生を有効にできます。

重要
  • Alibaba Cloud 動画暗号化 (プライベート暗号化) は無料のサービスですが、暗号化を有効にするにはメディアトランスコーディングを使用する必要があります。トランスコーディングには料金が発生します。詳細については、「メディアトランスコーディングの課金」をご参照ください。

プライベート暗号化の設定

Alibaba Cloud 動画暗号化の設定の詳細については、「操作ガイド」をご参照ください。

制限事項

Alibaba Cloud 動画暗号化 (プライベート暗号化) は、HLS、FLV、MP4 形式の動画の暗号化をサポートしています。これらの動画は、Alibaba Cloud Player でのみ再生できます。Web クライアントは HLS 再生のみをサポートしています。ネイティブクライアントは、これらすべての形式の再生をサポートしています。

Alibaba Cloud 動画暗号化 (ライセンスベースのプライベート暗号化)

Alibaba Cloud 動画暗号化 (ライセンスベースのプライベート暗号化) は、プライベート暗号化のセキュリティをベースに、暗号化された動画 URL から直接再生を開始できるようにします。これにより起動速度が向上し、ショートビデオや短尺ドラマといった用途に最適です。

重要
  • Alibaba Cloud 動画暗号化 (ライセンスベースのプライベート暗号化) は無料のサービスですが、暗号化を有効にするにはメディアトランスコーディングを使用する必要があります。トランスコーディングには料金が発生します。詳細については、「メディアトランスコーディングの課金」をご参照ください。

ライセンスベースのプライベート暗号化の設定

Alibaba Cloud 動画暗号化の設定の詳細については、「操作ガイド」をご参照ください。

制限事項

Alibaba Cloud 動画暗号化 (ライセンスベースのプライベート暗号化) は、HLS および MP4 形式の動画の暗号化をサポートしています。これらの暗号化された動画は、Alibaba Cloud Player でのみ再生できます。

HLS 標準暗号化

HLS 標準暗号化は、AES-128 アルゴリズムを使用して動画コンテンツを暗号化します。自社開発やオープンソースのプレーヤーを含め、すべての HLS プレーヤーと互換性があり、高い柔軟性が得られます。ただし、実装がより複雑で、独自方式ほど安全ではありません。詳細については、「HLS 標準暗号化」をご参照ください。

重要

HLS 標準暗号化は無料のサービスですが、暗号化を有効にするにはメディアトランスコーディングを使用する必要があります。トランスコーディングには料金が発生します。詳細については、「メディアトランスコーディングの課金」をご参照ください。

HLS 標準暗号化の設定

HLS 標準暗号化の設定の詳細については、「統合ガイド」をご参照ください。

制限事項

HLS 標準暗号化はさまざまな HLS プレーヤーと互換性があるため、お好みのプレーヤーを選択できます。このトピックでは、Alibaba Cloud Player を例として、HLS で暗号化された動画の再生方法を説明します。Alibaba Cloud Player はトークンの受け渡しをサポートしています。CDN は、HLS マニフェストファイル内の復号 URI を動的に調整し、アプリケーションが検証できるユーザートークンを追加します。

Alibaba Cloud DRM 暗号化

ApsaraVideo VOD は、業界標準のデジタル著作権管理 (DRM) 暗号化をサポートし、著作権で保護された動画をワンストップで管理するソリューションを提供します。Widevine および FairPlay スキームと互換性があります。詳細については、「DRM 暗号化」をご参照ください。

重要

DRM 暗号化はトランスコーディングプロセス中に適用されます。この段階では、メディアトランスコーディング料金のみが発生します。DRM 暗号化料金は、クライアントデバイスが動画を再生するためのライセンスをリクエストしたときに発生します。課金の詳細については、「DRM の課金」をご参照ください。

DRM 暗号化の設定

この機能は、ApsaraVideo Live および ApsaraVideo VOD コンソールで有効にできます。詳細については、「ApsaraVideo Live の DRM 暗号化の設定」および「ApsaraVideo VOD の DRM 暗号化の設定」をご参照ください。

制限事項

現在、DRM で暗号化された動画は、Alibaba Cloud Player でのみ再生できます。

サードパーティ DRM 暗号化

ApsaraVideo VOD は、業界標準のサードパーティ DRM 暗号化をサポートし、完全なワークフローを実現します。このプロセスは、ApsaraVideo for Media Processing での動画制作、サードパーティ DRM プロバイダーによる暗号化から、Alibaba Cloud Player SDK を使用した復号と再生までを網羅しています。

重要

DRM 暗号化は、トランスコーディングプロセス中に適用されます。この段階では、メディアトランスコーディング料金のみが発生します。クライアントデバイスがビデオを再生するためのライセンスを要求すると、DRM 暗号化料金が発生します。課金の詳細については、「DRM 課金」をご参照ください。

サードパーティ DRM 暗号化の設定

この機能は、ApsaraVideo for Media Processing コンソールで有効にできます。詳細については、「ライブパッケージング」および「VOD パッケージング」をご参照ください。

Web クライアント

説明
  • ApsaraVideo Player SDK for Web を使用する前に、ブラウザ互換性、および Alibaba Cloud 独自暗号化を使用した動画の再生に対応しているかを確認してください。

    • H5 モードは、デスクトップとモバイルの両方のブラウザをサポートしています。詳細については、「機能サポート」をご参照ください。

  • セキュリティ上の理由により、Alibaba Cloud 独自暗号化では、実際の暗号化された動画を使用したデバッグはできません。

操作手順

Web プレーヤーを Web ページに埋め込んで動画を再生します。

  1. クイックスタート」ガイドに従って、ApsaraVideo Player SDK for Web をページにインポートします。

  2. 暗号化方式を選択して再生を開始します。

    次のコードは、プレーヤーを埋め込む方法を示しています。

Alibaba Cloud 独自暗号化

VOD (VidAuth)

ApsaraVideo VOD VidAuth 方式を使用して Alibaba Cloud 独自暗号化で暗号化された動画を再生するには、encryptType: 1 パラメータを渡して Alibaba Cloud 独自暗号化を有効にする必要があります。このパラメータは、標準動画の再生には不要です。

<!DOCTYPE html>
  <html>
      <head>
       <meta charset="UTF-8">
       <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no" />
       <title>VOD 独自暗号化再生テストケース</title>
       <link rel="stylesheet" href="https://g.alicdn.com/apsara-media-box/imp-web-player/2.16.3/skins/default/aliplayer-min.css" />
       <script charset="utf-8" type="text/javascript" src="https://g.alicdn.com/apsara-media-box/imp-web-player/2.16.3/aliplayer-min.js"></script>
      </head>
      <body>
          <div class="prism-player" id="J_prismPlayer"></div>
          <script>
              var player = new Aliplayer({
                id: 'J_prismPlayer',
                width: '100%',
                vid: '<your video ID>', // 必須。動画 ID。ApsaraVideo VOD コンソールの [メディアライブラリ] > [オーディオ/ビデオ] で確認できます。例: 1e067a2831b641db90d570b6480f****。
                playauth: '<your PlayAuth>', // 必須。再生認証情報。GetVideoPlayAuth API を呼び出して取得します。
                encryptType: 1, // 必須。Alibaba Cloud 独自暗号化を使用したストリームを再生する場合は、これを 1 に設定します。
                playConfig: {EncryptType: 'AliyunVoDEncryption'}, // HLS (M3U8) ストリームに Alibaba Cloud 独自暗号化を使用しない他のストリームも含まれている場合に必須です。
                // authTimeout: 7200, // オプション。再生 URL の有効期間 (秒単位)。この値は、ApsaraVideo VOD コンソールで設定された URL 署名の有効期間を上書きします。指定しない場合、デフォルト値は 7200 です。設定する場合は、再生中に URL の有効期限が切れないように、この値が動画の長さを超えるように設定してください。
              },function(player){
                console.log('プレーヤーが作成されました。')
             });
          </script>
      </body>
  </html>

Live (LiveStsSource)

LiveStsSource 方式を使用して Alibaba Cloud 独自暗号化を使用したライブストリームを再生するには、ストリーム URL と STS 一時的な認証情報を指定する必要があります。認証情報の生成方法については、「STS トークンの取得」をご参照ください。

<!DOCTYPE html>
 <html>
     <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no" />
      <title>Live 独自暗号化再生テストケース</title>
      <link rel="stylesheet" href="https://g.alicdn.com/apsara-media-box/imp-web-player/2.35.6/skins/default/aliplayer-min.css" />
      <script charset="utf-8" type="text/javascript" src="https://g.alicdn.com/apsara-media-box/imp-web-player/2.35.6/aliplayer-min.js"></script>
     </head>
     <body>
         <div class="prism-player" id="J_prismPlayer"></div>
         <script>
             var player = new Aliplayer({
               id: 'J_prismPlayer',
               width: '100%',
               isLive: true, // ライブストリーミングの場合は true に設定します。
               source: '<your live stream url>', // 必須。Alibaba Cloud 独自暗号化を使用した HLS ライブストリームの再生 URL。
               accessKeyId: '<your AccessKey ID>', // 必須。STS 一時的な認証情報ペアの AccessKey ID。STS AssumeRole API を呼び出して生成します。
               accessKeySecret: '<your AccessKey Secret>', // 必須。STS 一時的な認証情報ペアの AccessKey Secret。STS AssumeRole API を呼び出して生成します。
               securityToken: '<your STS token>', // 必須。STS セキュリティトークン。STS AssumeRole API を呼び出して生成します。
               domain: '<your Domain>', // 必須。ライブストリームのストリーミングドメイン。
               app: '<your App Name>', // 必須。ライブストリームの AppName。
               stream: '<your Stream Name>', // 必須。元のライブストリームの StreamName。トランスコード済みストリームではありません。
               regionId: '<region of your video>', // 必須。サービスリージョン。例: cn-shanghai、eu-central-1、ap-southeast-1。
               useHls2: false,
             },function(player){
               console.log('プレーヤーが作成されました。')
            });
         </script>
     </body>
 </html>
説明
  • iOS 17.1 より前のバージョンのブラウザで暗号化されたオンデマンド動画を再生するには、追加のプレーヤープラグインスクリプトをデプロイする必要があります。次の手順に従ってください。

    仕組み: iOS 17.1 より前のバージョンでは、独自暗号化には Service Worker テクノロジーを使用する追加のプラグインが必要です。ブラウザのセキュリティポリシーにより、Web サイトは 同一オリジン のソースからのみ Service Worker スクリプトにアクセスできます。そのため、プレーヤープラグインスクリプトを Web サイトと同じドメインにデプロイする必要があります。

    1. スクリプトをダウンロードします: https://g.alicdn.com/apsara-media-box/imp-web-player/<version_number>/aliplayer-worker-min.js

    2. スクリプトをデプロイします: たとえば、動画再生 Web サイトが https://www.aliyun.com/a/b.html の場合、スクリプトを https://www.aliyun.com/a/aliplayer-worker-min.js にデプロイする必要があります。これは、Web ページと同じディレクトリに配置する必要があることを意味します。

    3. プレーヤーを初期化するときに、この URL を渡します。

      new Aliplayer({
        // ...その他のパラメータ
        swScriptURL: 'https://www.aliyun.com/a/aliplayer-worker-min.js' // プラグインスクリプトの完全な URL を指定し、アクセスできることを確認してください。
      })

    注: プレーヤーのバージョンとプラグインのバージョンが完全に一致していることを確認してください。

  • Web ページが uni-app などのカスタムパッケージ化された iOS アプリケーション内で実行される場合、アプリの Info.plist ファイルの WKAppBoundDomains に Web サイトのドメインを追加する必要があります。これにより、WKWebView で Service Worker 機能が有効になります。詳細については、「App-Bound Domains」をご参照ください。

HLS 標準暗号化

VOD (VidAuth)

ApsaraVideo VOD VidAuth 方式を使用して HLS 標準暗号化された動画を再生する場合、動画に他の非 HLS 標準暗号化ストリームまたは標準トランスコード済みストリームも含まれている場合は、EncryptType パラメータを HLSEncryption に設定して、HLS 標準暗号化ストリームのみをフィルタリングして再生できます

let player = new Aliplayer({
   id: 'J_prismPlayer',
   vid: '<your video ID>', // 必須。動画 ID。例: 1e067a2831b641db90d570b6480f****。
   playauth: '<your PlayAuth>', // 必須。動画再生認証情報。
   playConfig: { // オプション。
     MtsHlsUriToken: '', // オプション。MtsHlsUriToken (ユーザートークン) を検証する必要がある場合は、このパラメータに渡します。
     EncryptType: 'HLSEncryption', // オプション。このパラメータを HLSEncryption に設定すると、HLS 標準暗号化を使用したストリームのみが返されます。
   },
 });

VOD (VidSts)

ApsaraVideo VOD VidSts 方式を使用して HLS 標準暗号化された動画を再生する場合、動画に他の非 HLS 標準暗号化ストリームまたは標準トランスコード済みストリームも含まれている場合は、EncryptType パラメータを HLSEncryption に設定して、HLS 標準暗号化ストリームのみをフィルタリングして再生できます。

let player = new Aliplayer({
   id: 'J_prismPlayer',
   vid : '<your video ID>', // 必須。動画 ID。ApsaraVideo VOD コンソール ([メディアライブラリ] > [オーディオ/ビデオ]) から取得するか、動画のアップロード後に SearchMedia API を呼び出して取得することもできます。例: 1e067a2831b641db90d570b6480f****。
   accessKeyId: '<your AccessKey ID>', // 必須。STS 一時的な認証情報ペアの AccessKey ID。STS セキュリティトークンの生成時に返されます。
   securityToken: '<your STS token>', // 必須。STS セキュリティトークン。STS AssumeRole API を呼び出して生成します。
   accessKeySecret: '<your AccessKey Secret>', // 必須。STS 一時的な認証情報ペアの AccessKey Secret。STS セキュリティトークンの生成時に返されます。
   region: '<region of your video>', // 必須。サービスリージョン。例: cn-shanghai、eu-central-1、ap-southeast-1。
   playConfig: { // オプション。
     MtsHlsUriToken: '', // オプション。MtsHlsUriToken (ユーザートークン) を検証する必要がある場合は、このパラメータに渡します。
     EncryptType: 'HLSEncryption', // オプション。このパラメータを HLSEncryption に設定すると、HLS 標準暗号化を使用したストリームのみが返されます。
   },
 };

UrlSource

UrlSource 方式を使用して HLS 標準暗号化されたライブストリームまたは VOD ストリームを再生する場合、追加のパラメータは必要ありません。設定は標準動画の再生と同じです。

  let player = new Aliplayer({
    id: 'J_prismPlayer',
    source: '<your play URL>', // 再生 URL。ライブストリームまたは VOD ストリームの URL を指定できます。
    isLive: true, // ライブストリーミングの場合は true に設定します。
  });

DRM 暗号化

VOD (VidSts)

ApsaraVideo VOD VidSts 方式を使用して DRM 暗号化された動画を再生するには、isDrm: true パラメータも渡す必要があります

<!DOCTYPE html>
 <html>
     <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no" />
      <title>VOD DRM 暗号化テストケース</title>
      <link rel="stylesheet" href="https://g.alicdn.com/apsara-media-box/imp-web-player/2.16.3/skins/default/aliplayer-min.css" />
      <script charset="utf-8" type="text/javascript" src="https://g.alicdn.com/apsara-media-box/imp-web-player/2.16.3/aliplayer-min.js"></script>
     </head>
     <body>
         <div class="prism-player" id="J_prismPlayer"></div>
         <script>
             var player = new Aliplayer({
               id: 'J_prismPlayer',
               width: '100%',
               isDrm: true,
               vid: '<your video ID>', // 必須。動画 ID。ApsaraVideo VOD コンソールの [メディアライブラリ] > [オーディオ/ビデオ] で確認できます。例: 1e067a2831b641db90d570b6480f****。
               accessKeyId: '<your AccessKey ID>', // 必須。STS 一時的な認証情報ペアの AccessKey ID。STS AssumeRole API を呼び出して生成します。
               securityToken: '<your STS token>', // 必須。STS セキュリティトークン。STS AssumeRole API を呼び出して生成します。
               accessKeySecret: '<your AccessKey Secret>', // 必須。STS 一時的な認証情報ペアの AccessKey Secret。STS AssumeRole API を呼び出して生成します。
               region: '<region of your video>', // 必須。サービスリージョン。例: cn-shanghai、eu-central-1、ap-southeast-1。
               certId: '<your certificate ID>', // Apple デバイスでの再生に必須。このパラメータを使用して Apple 証明書をリクエストします。DRM の実装に応じて、ApsaraVideo VOD または ApsaraVideo Live コンソールから取得します。
               // authTimeout: 7200, // オプション。再生 URL の有効期間 (秒単位)。この値は、ApsaraVideo VOD コンソールで設定された URL 署名の有効期間を上書きします。指定しない場合、デフォルト値は 7200 です。設定する場合は、再生中に URL の有効期限が切れないように、この値が動画の長さを超えるように設定してください。
             },function(player){
               console.log('プレーヤーが作成されました。')
            });
         </script>
     </body>
 </html>

Live (LiveStsSource)

LiveStsSource 方式を使用して DRM 暗号化されたライブストリームを再生するには、ストリーム URL と STS 一時的な認証情報に加えて、isDrm: true パラメータも渡す必要があります。STS 一時的な認証情報の生成方法については、「STS トークンの取得」をご参照ください。

<!DOCTYPE html>
 <html>
     <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no" />
      <title>Live DRM 暗号化テストケース</title>
      <link rel="stylesheet" href="https://g.alicdn.com/apsara-media-box/imp-web-player/2.16.3/skins/default/aliplayer-min.css" />
      <script charset="utf-8" type="text/javascript" src="https://g.alicdn.com/apsara-media-box/imp-web-player/2.16.3/aliplayer-min.js"></script>
     </head>
     <body>
         <div class="prism-player" id="J_prismPlayer"></div>
         <script>
             var player = new Aliplayer({
               id: 'J_prismPlayer',
               width: '100%',
               isLive: true, // ライブストリーミングの場合は true に設定します。
               isDrm: true,
               source: '<your live stream url>', // 必須。DRM 暗号化されたライブストリームの再生 URL。
               accessKeyId: '<your AccessKey ID>', // 必須。STS 一時的な認証情報ペアの AccessKey ID。STS AssumeRole API を呼び出して生成します。
               securityToken: '<your STS token>', // 必須。STS セキュリティトークン。STS AssumeRole API を呼び出して生成します。
               accessKeySecret: '<your AccessKey Secret>', // 必須。STS 一時的な認証情報ペアの AccessKey Secret。STS AssumeRole API を呼び出して生成します。
               region: '<region of your video>', // 必須。サービスリージョン。例: cn-shanghai、eu-central-1、ap-southeast-1。
               certId: '<your certificate ID>', // Apple デバイスでの再生に必須。このパラメータを使用して Apple 証明書をリクエストします。DRM の実装に応じて、ApsaraVideo VOD または ApsaraVideo Live コンソールから取得します。
             },function(player){
               console.log('プレーヤーが作成されました。')
            });
         </script>
     </body>
 </html>

Android

手順

Alibaba Cloud Player SDK for Android をアプリケーションに統合して、動画再生を有効にできます。 次のセクションでは、必要な手順とサンプルコードを示します。

  1. Alibaba Cloud Player SDK for Android を統合します。

    手順については、「SDK の統合」をご参照ください。

  2. プレーヤーを作成して動画を再生します。

    プレーヤーの作成方法については、「基本機能」をご参照ください。「手順 3. DataSource の作成」については、要件に応じて次のいずれかの方法を選択して DataSource を作成します。

Alibaba Cloud ビデオ暗号化 (プライベート暗号化)

使用上の注意

Alibaba Cloud ビデオ暗号化 (プライベート暗号化) で暗号化された HLS 動画は、トランスコードテンプレートでトランスコードされた後、URL を使用して再生できます。 動画をトランスコードする前に、同じアカウントでライセンスをバインドする必要があります。 詳細については、「ライセンスの管理」をご参照ください。 次に、EncryptType パラメーターを使用して「トランスコードテンプレートグループを作成」します。 次のコードに例を示します。

重要

テンプレートを作成した後、コンソールで変更または保存しないでください。 そうしないと、暗号化方式が上書きされます。

[{
        "TranscodeTemplateId": "",
	"TemplateName": "740P H.264 HLS local encryption",
	"Type": "Normal",
	"Container": {
		"Format": "m3u8"
	},
	"TransConfig": {
		"IsCheckReso": false,
		"IsCheckResoFail": false,
		"IsCheckVideoBitrate": false,
		"IsCheckVideoBitrateFail": false,
		"IsCheckAudioBitrate": false,
		"IsCheckAudioBitrateFail": false
	},
	"Definition": "HD",
	"MuxConfig": {
		"Segment": {
			"Duration": 5
		}
	},
	"EncryptSetting": {
		"EncryptType": "AliyunVoDEncryption"
	},
	"Video": {
		"Height": 720,
		"Bitrate": 400,
		"Codec": "H.264",
		"Fps": 25,
		"Gop": 250,
		"Profile": "high"
	},
	"Audio": {
		"Bitrate": 64,
		"Codec": "AAC",
		"Channels": 2,
		"Samplerate": "44100"
	}
}]

VidAuth

ApsaraVideo VOD の VidAuth を使用してプライベート暗号化された HLS または MP4 動画を再生する場合、動画に他の暗号化方式のストリームや暗号化されていないトランスコード済みストリームも含まれている場合は、動画の暗号化方式を AliyunVoDEncryption に設定して、プライベート暗号化されたストリームのみを再生できます

VidAuth vidAuth = new VidAuth();
VidPlayerConfigGen vidPlayerConfigGen = new VidPlayerConfigGen();
vidPlayerConfigGen.setEncryptType(VidPlayerConfigGen.EncryptType.AliyunVoDEncryption); // オプション。 このパラメーターを AliyunVoDEncryption に設定すると、プライベート暗号化された動画ストリームのみを返します。
vidAuth.setPlayConfig(vidPlayerConfigGen);
vidAuth.setVid("your_video_id"); // 必須。 動画 ID。
vidAuth.setPlayAuth("<yourPlayAuth>"); // 必須。 PlayAuth。ApsaraVideo VOD の GetVideoPlayAuth API を呼び出して生成します。
vidAuth.setRegion("your_region"); // このパラメーターは、プレーヤー SDK V5.5.5.0 以降では非推奨です。 プレーヤーが自動的に解決するため、リージョンを設定する必要はありません。 以前のバージョンでは、このパラメーターは必須です。 ApsaraVideo VOD が有効なリージョンを指定します。 デフォルト値: cn-shanghai。
// vidAuth.setAuthTimeout(3600); // オプション。 再生 URL の有効期間 (秒単位) 。 この値は、ApsaraVideo VOD コンソールで設定した URL 認証の有効期間を上書きします。 デフォルト値は 3600 です。 このパラメーターを設定する場合、再生が完了する前に URL が期限切れになるのを防ぐために、その値が動画の長さを超えていることを確認してください。
aliPlayer.setDataSource(vidAuth);

VidSts

ApsaraVideo VOD の VidSts を使用してプライベート暗号化された HLS または MP4 動画を再生する場合、動画に他の暗号化方式のストリームや暗号化されていないトランスコード済みストリームも含まれている場合は、動画の暗号化方式を AliyunVoDEncryption に設定して、プライベート暗号化されたストリームのみを再生できます。

VidSts vidSts = new VidSts();
VidPlayerConfigGen vidPlayerConfigGen = new VidPlayerConfigGen();
vidPlayerConfigGen.setEncryptType(VidPlayerConfigGen.EncryptType.AliyunVoDEncryption); // オプション。 このパラメーターを AliyunVoDEncryption に設定すると、プライベート暗号化された動画ストリームのみを返します。
vidSts.setPlayConfig(vidPlayerConfigGen);
vidSts.setVid("your_video_id"); // 必須。 動画 ID。
vidSts.setAccessKeyId("<yourAccessKeyId>"); // 必須。 一時的な STS 認証情報の AccessKey ID。 STS AssumeRole API を呼び出して取得します。
vidSts.setAccessKeySecret("<yourAccessKeySecret>"); // 必須。 一時的な STS 認証情報の AccessKey Secret。 STS AssumeRole API を呼び出して取得します。
vidSts.setSecurityToken("<yourSecurityToken>"); // 必須。 セキュリティトークン。 STS AssumeRole API を呼び出して取得します。
vidSts.setRegion("your_region"); // 必須。 ApsaraVideo VOD が有効なリージョン。 デフォルト値: cn-shanghai。
// vidSts.setAuthTimeout(3600); // オプション。 再生 URL の有効期間 (秒単位) 。 この値は、ApsaraVideo VOD コンソールで設定した URL 認証の有効期間を上書きします。 デフォルト値は 3600 です。 このパラメーターを設定する場合、再生が完了する前に URL が期限切れになるのを防ぐために、その値が動画の長さを超えていることを確認してください。
aliPlayer.setDataSource(vidSts);

LiveSts

ApsaraVideo Live の LiveSts オブジェクトを使用して、プライベート暗号化された HLS または FLV 形式のライブストリームを再生するには、URL と STS 認証情報を渡し、動画の暗号化方式を AliEncryption に設定する必要があります。 次のコードに例を示します。

  1. データソースを作成します。

    再生ソースとして LiveSts を渡す必要があります。

    // LiveSts オブジェクトを作成し、EncryptionType を AliEncryption に設定します。
    LiveSts liveSts = new LiveSts();
    liveSts.setUrl("<your live stream url>"); // 必須。 プライベート暗号化された HLS ライブストリームの再生 URL。
    liveSts.setAccessKeyId("<your AccessKey ID>"); // 必須。 一時的な STS 認証情報の AccessKey ID。 STS AssumeRole API を呼び出して取得します。
    liveSts.setAccessKeySecret("<your AccessKey Secret>"); // 必須。 一時的な STS 認証情報の AccessKey Secret。 STS AssumeRole API を呼び出して取得します。
    liveSts.setSecurityToken("<your STS token>"); // 必須。 セキュリティトークン。 STS AssumeRole API を呼び出して取得します。
    liveSts.setDomain("<your Domain>"); // 必須。 ライブストリームのストリーミングドメイン。
    liveSts.setApp("<your App Name>"); // 必須。 ライブストリームの AppName。
    liveSts.setStream("<your Stream Name>"); // 必須。 ライブストリームの StreamName。
    liveSts.setEncryptionType(LiveSts.LiveEncryptionType.AliEncryption); // 必須。 暗号化方式を AliEncryption に設定します。
    liveSts.setRegion("<region of your video>"); // 必須。 サービスリージョン (例: cn-shanghai)。
    // 再生ソースを設定します。
    aliPlayer.setDataSource(liveSts);
    // 再生を準備します。
    aliPlayer.prepare();
  2. STS の無効化を監視します。

    暗号化されたライブ再生中、キーローテーションが発生する場合があります。 キーローテーションが発生すると、プレーヤーは STS 認証情報を使用して新しいキーを要求します。 無効な認証情報は再生を中断させるため、STS 認証情報の有効性を監視する必要があります。

    mAliyunVodPlayer.setOnVerifyTimeExpireCallback(new AliPlayer.OnVerifyTimeExpireCallback() {
        @Override
        public AliPlayer.Status onVerifySts(StsInfo info) {
            if (info が有効な場合) {
                return AliPlayer.Status.Valid;
            }
    
            if (有効な STS 認証情報を取得できる場合) {
                getSTS(); // 非同期または同期で実行できます。
                return AliPlayer.Status.Pending;
            }
            // 情報が無効で、新しい STS 認証情報を取得できない場合は、破損した動画出力を防ぐために再生を停止することを推奨します。
            mAliyunVodPlayer.stop();
            return AliPlayer.Status.Invalid;
        }
    
        @Override
        public AliPlayer.Status onVerifyAuth(VidAuth auth) {
            return AliPlayer.Status.Valid;
        }
    });
    説明

    新しい STS 認証情報の取得に成功したら、updateLiveStsInfo メソッドを呼び出して更新する必要があります。新しい認証情報の取得に失敗した場合は、再生を停止することをお勧めします。STS 認証情報を更新しないと、プレーヤーは有効期限が切れた後も古い認証情報を使用してキーをリクエストし続けます。STS 認証情報が無効になると、再生の失敗や映像の破損が発生する可能性があります。

    mAliyunVodPlayer.updateStsInfo(stsInfo);

Alibaba Cloud ビデオ暗号化 (ライセンスベースのプライベート暗号化)

使用上の注意

Alibaba Cloud ビデオ暗号化 (ライセンスベースのプライベート暗号化) で暗号化された HLS 動画は、トランスコードテンプレートでトランスコードされた後、URL を使用して再生できます。 動画をトランスコードする前に、同じアカウントでライセンスをバインドする必要があります。 詳細については、「ライセンスの管理」をご参照ください。 次に、EncryptType パラメーターを使用して「トランスコードテンプレートグループを作成」します。 次のコードに例を示します。

重要

テンプレートを作成した後、コンソールで変更または保存しないでください。 そうしないと、暗号化方式が上書きされます。

[{
        "TranscodeTemplateId": "",
	"TemplateName": "740P H.264 HLS local encryption",
	"Type": "Normal",
	"Container": {
		"Format": "m3u8"
	},
	"TransConfig": {
		"IsCheckReso": false,
		"IsCheckResoFail": false,
		"IsCheckVideoBitrate": false,
		"IsCheckVideoBitrateFail": false,
		"IsCheckAudioBitrate": false,
		"IsCheckAudioBitrateFail": false
	},
	"Definition": "HD",
	"MuxConfig": {
		"Segment": {
			"Duration": 5
		}
	},
	"EncryptSetting": {
		"EncryptType": "AliyunVoDLicenseEncryption"
	},
	"Video": {
		"Height": 720,
		"Bitrate": 400,
		"Codec": "H.264",
		"Fps": 25,
		"Gop": 250,
		"Profile": "high"
	},
	"Audio": {
		"Bitrate": 64,
		"Codec": "AAC",
		"Channels": 2,
		"Samplerate": "44100"
	}
}]

UrlSource

説明

Alibaba Cloud Player SDK for Android V6.8.0 以降でのみ、UrlSource を使用したライセンスベースのプライベート暗号化 MP4 動画の再生をサポートします。 V6.17.0 以降では、ライセンスベースのプライベート暗号化 HLS 動画 (シングルビットレートおよびアダプティブビットレート) をサポートします。

UrlSource を使用して、HLS または MP4 形式のライセンスベースのプライベート暗号化ビデオを再生するには、GetPlayInfo 操作を呼び出してビデオ再生 URL を取得します。MP4 URL の場合、プレーヤーに渡す前に URL に etavirp_nuyila=1 を追加します。このパラメーターは、クエリ文字列の任意の場所に配置できます。HLS の場合、元のビデオ URL を使用できます。プレーヤー SDK は、標準ビデオの場合と同様に設定します。追加のパラメーターは必要ありません。

再生 URL の例 1: https://example.aliyundoc.com/test.mp4?etavirp_nuyila=1

再生 URL 例 2: https://example.aliyundoc.com/test.mp4?auth_key=xxxxx&etavirp_nuyila=1

// 再生 URL
String playURL = "https://example.aliyundoc.com/test.mp4?etavirp_nuyila=1";

// プレーヤー
UrlSource urlSource = new UrlSource();
urlSource.setUri(playURL); // 必須。 動画の再生 URL。 GetPlayInfo API を呼び出して URL を取得できます。
aliPlayer.setDataSource(urlSource);
aliPlayer.prepare();

// ショートビデオプレーヤー
AliListPlayer aliyunListPlayer = AliPlayerFactory.createAliListPlayer(getApplicationContext());
// UrlSource を追加
aliyunListPlayer.addUrl(playURL,uid);
aliyunListPlayer.moveTo(uid);

// プリロード
MediaLoader mediaLoader = MediaLoader.getInstance();
mediaLoader.load(playURL,"duration");

標準 HLS 暗号化

VidAuth

ApsaraVideo VOD の VidAuth を使用して標準 HLS 暗号化を使用する動画を再生する場合、動画に標準 HLS 暗号化以外のストリームや標準のトランスコード済みストリームも含まれている場合は、暗号化方式を HLSEncryption に設定して、標準 HLS 暗号化ストリームのみを再生できます。 次のコードに例を示します。

重要

標準 HLS 暗号化 M3U8 ファイルの書き換えを有効にした場合、setMtsHlsUriToken を呼び出してユーザートークンを設定する必要があります。

VidAuth vidAuth = new VidAuth();
VidPlayerConfigGen playerConfig = new VidPlayerConfigGen();
playerConfig.setEncryptType(VidPlayerConfigGen.EncryptType.HLSEncryption); // オプション。 このパラメーターを HLSEncryption に設定すると、標準 HLS 暗号化動画ストリームのみを返します。
playerConfig.setMtsHlsUriToken("token"); // オプション。 MtsHlsUriToken (ユーザートークン) を検証する場合は、このパラメーターを渡します。
vidAuth.setPlayConfig(playerConfig);
vidAuth.setVid("your_video_id"); // 必須。 動画 ID。
vidAuth.setPlayAuth("<yourPlayAuth>"); // 必須。 PlayAuth。ApsaraVideo VOD の GetVideoPlayAuth API を呼び出して生成します。
vidAuth.setRegion("your_region"); // このパラメーターは、プレーヤー SDK V5.5.5.0 以降では非推奨です。 プレーヤーが自動的に解決するため、リージョンを設定する必要はありません。 以前のバージョンでは、このパラメーターは必須です。 ApsaraVideo VOD が有効なリージョンを指定します。 デフォルト値: cn-shanghai。
// vidAuth.setAuthTimeout(3600); // オプション。 再生 URL の有効期間 (秒単位) 。 この値は、ApsaraVideo VOD コンソールで設定した URL 認証の有効期間を上書きします。 デフォルト値は 3600 です。 このパラメーターを設定する場合、再生が完了する前に URL が期限切れになるのを防ぐために、その値が動画の長さを超えていることを確認してください。
aliPlayer.setDataSource(vidAuth);

VidSts

ApsaraVideo VOD の VidSts を使用して標準 HLS 暗号化を使用する動画を再生する場合、動画に標準 HLS 暗号化以外のストリームや標準のトランスコード済みストリームも含まれている場合は、暗号化方式を HLSEncryption に設定して、標準 HLS 暗号化ストリームのみを再生できます。 次のコードに例を示します。

重要

標準 HLS 暗号化 M3U8 ファイルを書き換えるを有効にした場合、setMtsHlsUriToken を呼び出してユーザートークンを設定する必要があります。

VidSts vidSts = new VidSts();
VidPlayerConfigGen playerConfig = new VidPlayerConfigGen();
playerConfig.setEncryptType(VidPlayerConfigGen.EncryptType.HLSEncryption); // オプション。 このパラメーターを HLSEncryption に設定すると、標準 HLS 暗号化動画ストリームのみを返します。
playerConfig.setMtsHlsUriToken("token"); // オプション。 MtsHlsUriToken (ユーザートークン) を検証する場合は、このパラメーターを渡します。
vidSts.setPlayConfig(playerConfig);
vidSts.setVid("your_video_id"); // 必須。 動画 ID。
vidSts.setAccessKeyId("<yourAccessKeyId>"); // 必須。 一時的な STS 認証情報の AccessKey ID。 STS AssumeRole API を呼び出して取得します。
vidSts.setAccessKeySecret("<yourAccessKeySecret>"); // 必須。 一時的な STS 認証情報の AccessKey Secret。 STS AssumeRole API を呼び出して取得します。
vidSts.setSecurityToken("<yourSecurityToken>"); // 必須。 セキュリティトークン。 STS AssumeRole API を呼び出して取得します。
vidSts.setRegion("your_region"); // 必須。 ApsaraVideo VOD が有効なリージョン。 デフォルト値: cn-shanghai。
// vidSts.setAuthTimeout(3600); // オプション。 再生 URL の有効期間 (秒単位) 。 この値は、ApsaraVideo VOD コンソールで設定した URL 認証の有効期間を上書きします。 デフォルト値は 3600 です。 このパラメーターを設定する場合、再生が完了する前に URL が期限切れになるのを防ぐために、その値が動画の長さを超えていることを確認してください。
aliPlayer.setDataSource(vidSts);

UrlSource

UrlSource で標準 HLS 暗号化を使用するストリームを再生する場合、プレーヤー SDK を標準動画と同様に設定します。

ApsaraVideo VOD の使用を推奨します。GetPlayInfo 操作を呼び出して動画の再生 URL を取得し、プレーヤーに渡すことができます。

重要

標準 HLS 暗号化 M3U8 ファイルの書き換え」を有効にした場合、プレーヤーに渡す前に動画 URL に MtsHlsUriToken=<token> を追加する必要があります。 このパラメーターはクエリ文字列のどこにでも配置できます

元の再生 URL の例:https://demo.aliyundoc.com/encrypt-stream****-hd.m3u8

プレーヤーに渡す URL の例: https://demo.aliyundoc.com/encrypt-stream****-hd.m3u8?MtsHlsUriToken=<token>

UrlSource urlSource = new UrlSource();
urlSource.setUri("playback_url"); // 標準 HLS 暗号化を使用するライブまたはオンデマンドストリームの再生 URL。
aliPlayer.setDataSource(urlSource);

Alibaba Cloud DRM 暗号化

説明

Android では、高いレベルのセキュリティを持つ動画の適切な再生を確保するために、SurfaceView を使用することを推奨します。

VidSts

まず、「ApsaraVideo VOD の DRM 暗号化を設定する」の説明に従って DRM 暗号化を設定します。 ApsaraVideo VOD の VidSts を使用して DRM で暗号化された動画を再生する場合、設定は暗号化されていない動画と同じです。 追加のパラメーターは不要です

VidSts vidSts = new VidSts();
vidSts.setVid("your_video_id"); // 必須。 動画 ID。
vidSts.setAccessKeyId("<yourAccessKeyId>"); // 必須。 一時的な STS 認証情報の AccessKey ID。 STS AssumeRole API を呼び出して取得します。
vidSts.setAccessKeySecret("<yourAccessKeySecret>"); // 必須。 一時的な STS 認証情報の AccessKey Secret。 STS AssumeRole API を呼び出して取得します。
vidSts.setSecurityToken("<yourSecurityToken>"); // 必須。 セキュリティトークン。 STS AssumeRole API を呼び出して取得します。
vidSts.setRegion("your_region"); // 必須。 ApsaraVideo VOD が有効なリージョン。 デフォルト値: cn-shanghai。
// vidSts.setAuthTimeout(3600); // オプション。 再生 URL の有効期間 (秒単位) 。 この値は、ApsaraVideo VOD コンソールで設定した URL 認証の有効期間を上書きします。 デフォルト値は 3600 です。 このパラメーターを設定する場合、再生が完了する前に URL が期限切れになるのを防ぐために、その値が動画の長さを超えていることを確認してください。
aliPlayer.setDataSource(vidSts);

LiveSts

まず、「ApsaraVideo Live の DRM 暗号化を設定する」の説明に従って DRM 暗号化を設定します。 LiveSts オブジェクトを使用して DRM で暗号化されたライブストリームを再生するには、URL と STS 認証情報を渡し、動画の暗号化方式を WideVine_FairPlay に設定する必要があります。 次のコードに例を示します。

  1. データソースを作成します。

    再生ソースとして LiveSts を渡す必要があります。

    // LiveSts オブジェクトを作成し、EncryptionType を WideVine_FairPlay に設定します。
    LiveSts liveSts = new LiveSts();
    liveSts.setUrl("<your live stream url>"); // 必須。 DRM で暗号化された HLS ライブストリームの再生 URL。
    liveSts.setAccessKeyId("<your AccessKey ID>"); // 必須。 一時的な STS 認証情報の AccessKey ID。 STS AssumeRole API を呼び出して取得します。
    liveSts.setAccessKeySecret("<your AccessKey Secret>"); // 必須。 一時的な STS 認証情報の AccessKey Secret。 STS AssumeRole API を呼び出して取得します。
    liveSts.setSecurityToken("<your STS token>"); // 必須。 セキュリティトークン。 STS AssumeRole API を呼び出して取得します。
    liveSts.setDomain("<your Domain>"); // 必須。 ライブストリームのストリーミングドメイン。
    liveSts.setApp("<your App Name>"); // 必須。 ライブストリームの AppName。
    liveSts.setStream("<your Stream Name>"); // 必須。 ライブストリームの StreamName。
    liveSts.setEncryptionType(LiveSts.LiveEncryptionType.WideVine_FairPlay); // 必須。 暗号化方式を WideVine_FairPlay に設定します。 
    liveSts.setRegion("<region of your video>"); // 必須。 サービスリージョン (例: cn-shanghai)。
    // 再生ソースを設定します。
    aliPlayer.setDataSource(liveSts);
    // 再生を準備します。
    aliPlayer.prepare();
  2. STS の無効化を監視します。

    暗号化されたライブ再生中、キーローテーションが発生する場合があります。 キーローテーションが発生すると、プレーヤーは STS 認証情報を使用して新しいキーを要求します。 無効な認証情報は再生を中断させるため、STS 認証情報の有効性を監視する必要があります。

    mAliyunVodPlayer.setOnVerifyTimeExpireCallback(new AliPlayer.OnVerifyTimeExpireCallback() {
        @Override
        public AliPlayer.Status onVerifySts(StsInfo info) {
            if (info が有効な場合) {
                return AliPlayer.Status.Valid;
            }
    
            if (有効な STS 認証情報を取得できる場合) {
                getSTS(); // 非同期または同期で実行できます。
                return AliPlayer.Status.Pending;
            }
            // 情報が無効で、新しい STS 認証情報を取得できない場合は、破損した動画出力を防ぐために再生を停止することを推奨します。
            mAliyunVodPlayer.stop();
            return AliPlayer.Status.Invalid;
        }
    
        @Override
        public AliPlayer.Status onVerifyAuth(VidAuth auth) {
            return AliPlayer.Status.Valid;
        }
    });
    説明

    新しい STS 認証情報を正常に取得した後、updateLiveStsInfo メソッドを呼び出して更新する必要があります。新しい認証情報の取得に失敗した場合は、再生を停止することをお勧めします。STS 認証情報を更新しない場合、プレーヤーは有効期限が切れた後も古い認証情報を使用してキーをリクエストし続けます。STS 認証情報が無効になると、再生の失敗や映像の破損が発生する可能性があります。

    mAliyunVodPlayer.updateStsInfo(stsInfo);

サードパーティ DRM 暗号化

説明

この機能には、プレーヤー SDK V7.8.0 以降が必要です。

UrlSource

説明
  • この機能は、HLS および DASH プロトコルの Widevine DRM スキームのみをサポートします。

まず、「VOD パッケージング」を参照して DRM 暗号化を設定します。UrlSource メソッドを使用して DRM 暗号化ビデオを再生する場合、通常のビデオの設定に加えて、ビデオのキー情報を取得するために DrmCallback インターフェイスも実装する必要があります。

// サードパーティ DRM プロバイダーのドキュメントに従って、DrmCallback.requestKey インターフェースを実装してキーを取得します。
// 次の例は、PallyCon からキーを取得する方法を示しています。 詳細については、https://pallycon.com/docs/en/multidrm をご参照ください。

player.setDrmCallback(new DrmCallback() {
    @Override
    public byte[] requestKey(byte[] data) {
        // DRM プロバイダーの要件に従い、HTTP POST リクエストを使用してキー情報を要求します。
        String licenseUrl = "https://license-global.pallycon.com/ri/licenseManager.do";
        String[] header = {
            // TOKEN_ID を独自のものに置き換えます。
            "pallycon-customdata-v2: TOKEN_ID"
        };

        // このスレッドを長時間ブロックしないでください。
        byte[] response = async_http_post(licenseUrl, header, data);
        if (response != null) {
            // トークンの response_format が 'original' に設定されている場合は、レスポンスを直接返します。 それ以外の場合は、返す前にレスポンスを解析する必要があります。
            // 詳細については、https://pallycon.com/docs/en/multidrm/license/license-token/#token-json をご参照ください。
            // レスポンスの形式と構造は、プロバイダーによって大きく異なる場合があります。 慎重に確認してください。 レスポンスを復号に使用できない場合、プレーヤーは onError コールバックを介してエラーを報告します。
            return response;
        } else {
            // 例外を処理します。 プレーヤーは onError を呼び出し、関連するエラーを報告します。
            return null;
        }
    }
});

iOS

手順

Player SDK for iOS をアプリケーションに統合して、動画再生を有効にできます。手順とサンプルコードは次のとおりです。

  1. Player SDK for iOS を統合します。

    詳細については、「SDK の統合」をご参照ください。

  2. 動画を読み込んで再生するプレーヤーを作成します。

    プレーヤーを作成するには、「基本機能」をご参照ください。「ステップ 3. データソースを作成する」では、ビジネス要件に基づいて次のいずれかの方法でデータソースを作成してください。

Alibaba Cloud 独自暗号化

VOD の VidAuth

ApsaraVideo VOD の VidAuth 方式を使用して独自暗号化された HLS または MP4 動画を再生する場合、動画に非暗号化または標準トランスコードストリームも含まれている場合は、暗号化タイプを AliyunVoDEncryption に設定して、独自暗号化されたストリームのみを再生します

AVPVidAuthSource *authSource = [[AVPVidAuthSource alloc] init];
authSource.vid = @"Your video ID"; // 必須。ビデオ ID。
authSource.playAuth = @"<yourPlayAuth>"; // 必須。再生認証情報。ApsaraVideo VOD の GetVideoPlayAuth API を呼び出して取得します。
authSource.region = @"Your region"; // このパラメータは、Player SDK V5.5.5.0 以降では非推奨です。プレーヤーが自動的に解析するため、リージョンを設定する必要はありません。SDK バージョン 5.5.5.0 より前のバージョンでは、このパラメータは必須です。ApsaraVideo VOD がアクティブ化されているリージョンを指定します。デフォルト値: cn-shanghai。
// authSource.authTimeout = 3600; // オプション。再生 URL の有効期間 (秒単位)。この値は、ApsaraVideo VOD コンソールで設定された URL 認証の有効期間を上書きします。このパラメータを設定しない場合、デフォルト値 3600 が使用されます。このパラメータを設定する場合は、再生が完了する前に再生 URL が期限切れにならないように、その値が実際の動画の長さより大きいことを確認してください。

// VidPlayerConfigGenerator を使用して config を作成します。
VidPlayerConfigGenerator* config = [[VidPlayerConfigGenerator alloc]init];
[config addVidPlayerConfigByStringValue:@"EncryptType" value:@"AliyunVoDEncryption"]; // オプション。暗号化タイプを AliyunVoDEncryption に設定すると、独自暗号化された動画ストリームのみが返されます。
authSource.playConfig = [config generatePlayerConfig]; 
[self.player setAuthSource:authSource];

VOD の VidSts

ApsaraVideo VOD の VidSts 方式を使用して独自暗号化された HLS または MP4 動画を再生する場合、動画に非暗号化または標準トランスコードストリームも含まれている場合は、暗号化タイプを AliyunVoDEncryption に設定して、独自暗号化されたストリームのみを再生します

AVPVidStsSource *source = [[AVPVidStsSource alloc] init];
source.region = @"Your region"; // 必須。ApsaraVideo VOD がアクティブ化されているリージョン。デフォルト値: cn-shanghai。
source.vid = @"Your video ID"; // 必須。ビデオ ID。
source.securityToken = @"<yourSecurityToken>"; // 必須。セキュリティトークン。STS の AssumeRole API を呼び出して取得します。
source.accessKeySecret = @"<yourAccessKeySecret>"; // 必須。一時的な STS 認証情報の AccessKey Secret。STS の AssumeRole API を呼び出して取得します。
source.accessKeyId = @"<yourAccessKeyId>"; // 必須。一時的な STS 認証情報の AccessKey ID。STS の AssumeRole API を呼び出して取得します。
// source.authTimeout = 3600; // オプション。再生 URL の有効期間 (秒単位)。この値は、ApsaraVideo VOD コンソールで設定された URL 認証の有効期間を上書きします。このパラメータを設定しない場合、デフォルト値 3600 が使用されます。このパラメータを設定する場合は、再生が完了する前に再生 URL が期限切れにならないように、その値が実際の動画の長さより大きいことを確認してください。

// VidPlayerConfigGenerator を使用して config を作成します。
VidPlayerConfigGenerator* config = [[VidPlayerConfigGenerator alloc]init];
[config addVidPlayerConfigByStringValue:@"EncryptType" value:@"AliyunVoDEncryption"]; // オプション。暗号化タイプを AliyunVoDEncryption に設定すると、独自暗号化された動画ストリームのみが返されます。
source.playConfig = [config generatePlayerConfig]; 

// 再生ソースを設定します。
[self.player setStsSource:source];

ライブの LiveStsSource

LiveStsSource 方式を使用して HLS または FLV フォーマットの独自暗号化されたライブストリームを再生するには、ストリーム URL と STS 認証情報を提供し、動画の暗号化タイプを ENCRYPTION_TYPE_ALIVODENCRYPTION に設定する必要があります。以下にコード例を示します。

  1. データソースを作成します。

    再生ソースとして AVPLiveStsSource を渡す必要があります。

    // LiveSts オブジェクトを作成し、encryptionType を ENCRYPTION_TYPE_ALIVODENCRYPTION に設定します。
    AVPLiveStsSource *liveStsSource = [[AVPLiveStsSource alloc] initWithUrl:@"暗号化されたライブストリーム URL" 
                                                                accessKeyId:@"一時的な AccessKey ID" 
                                                                accessKeySecret:@"一時的な AccessKey Secret" 
                                                                securityToken:@"セキュリティトークン" 
                                                                region:@"リージョン" 
                                                                domain:@"URLのストリーミングドメイン" 
                                                                app:@"ストリーミングのアプリケーション名" 
                                                                stream:@"ストリーム名" 
                                                                encryptionType:ENCRYPTION_TYPE_ALIVODENCRYPTION];// 必須。暗号化タイプを ENCRYPTION_TYPE_ALIVODENCRYPTION に設定します。
     // 再生ソースを設定します。
     [self.aliPlayer setLiveStsSource:liveStsSource];
     // ...
     // 再生の準備をします。
     [self.aliPlayer prepare];
  2. STS 認証情報の無効化を監視します。

    暗号化されたライブ再生中に、暗号化キーがローテーションされる場合があります。これが発生すると、プレーヤーは STS 認証情報を使用して新しいキーをリクエストします。無効な認証情報は再生を中断するため、認証情報の有効性を監視する必要があります。

     __weak typeof(self) weakSelf = self;
    [self.aliPlayer setVerifyStsCallback:^AVPStsStatus(AVPStsInfo info) {
        if (info が有効) {
            return Valid;
        }
        if (有効な STS 認証情報を取得できる) {
            getSTS(); // これは非同期または同期の操作です。
            return Pending;
        }
        [weakSelf.aliPlayer stop];
        return Invalid;
    }];
    説明

    新しい STS 認証情報を取得した後、updateLiveStsInfo メソッドを呼び出して更新する必要があります。新しい認証情報の取得に失敗した場合は、再生を停止することを推奨します。STS 認証情報を更新しない場合、プレーヤーは期限切れの認証情報を使用してキーをリクエストしようとし、画面の乱れや再生失敗を引き起こす可能性があります。

    [self.aliPlayer updateLiveStsInfo:self.liveStsSource.accessKeyId accKey:self.liveStsSource.accessKeySecret token:self.liveStsSource.securityToken region:self.liveStsSource.region];

Alibaba Cloud ライセンスベースの独自暗号化

VOD の UrlSource

説明

Player SDK for iOS V6.8.0 以降のみが、UrlSource を使用したライセンスベースの独自暗号化された MP4 動画の再生をサポートしています。V6.17.0 以降は、シングルおよびアダプティブビットレートのライセンスベースの独自暗号化された HLS 動画をサポートしています。

UrlSource 方式を使用してライセンスベースの独自暗号化された HLS または MP4 動画を再生するには、GetPlayInfo API を呼び出して動画の再生 URL を取得できます。動画 URL を取得した後、プレーヤーに渡す前に URL に etavirp_nuyila=1 パラメータを追加する必要があります。このパラメータはクエリ文字列のどこにでも配置できます。このパラメータは MP4 動画にのみ必要です。HLS 動画の場合は、元の動画 URL を使用できます。プレーヤーの設定は、標準動画を再生する場合と同じです。追加のパラメータは必要ありません。

再生 URL の例 1: https://example.aliyundoc.com/test.mp4?etavirp_nuyila=1

再生 URL の例 2: https://example.aliyundoc.com/test.mp4?auth_key=xxxxx&etavirp_nuyila=1

// 再生 URL
NSString *playURL = @"https://example.aliyundoc.com/test.mp4?etavirp_nuyila=1";

// プレーヤー
AliPlayer *player = [[AliPlayer alloc] init];
AVPUrlSource *urlSource = [[AVPUrlSource alloc] urlWithString:playURL]; // 必須。動画の再生 URL。GetPlayInfo API を呼び出して URL を取得します。MP4 動画の場合は、URL に `etavirp_nuyila=1` を追加する必要があります。例: https://example.aliyundoc.com/test.mp4?etavirp_nuyila=1
[player setUrlSource:urlSource];
[player prepare];

// リストプレーヤー
AliListPlayer *listPlayer = [[AliListPlayer alloc] init];
[listPlayer addUrlSource:playURL uid:UUIDString];
[listPlayer moveTo:@"uid"];

// プリロード
AliMedialoader *mediaLoader = [AliMediaLoader shareInstance];
[mediaLoader load:playURL duration:1000];

HLS 標準暗号化

VOD の VidAuth

ApsaraVideo VOD の VidAuth 方式を使用して HLS 標準暗号化で暗号化された動画を再生する場合、動画に非暗号化または標準トランスコードストリームも含まれている場合は、暗号化タイプを HLSEncryption に設定して、HLS 標準暗号化されたストリームのみを再生します。以下にコード例を示します。

重要

M3U8 標準暗号化の書き換え」を有効にした場合は、setHlsUriToken を呼び出してユーザートークンを設定する必要があります。

AVPVidAuthSource *authSource = [[AVPVidAuthSource alloc] init];
authSource.vid = @"Your video ID"; // 必須。ビデオ ID。
authSource.playAuth = @"<yourPlayAuth>"; // 必須。再生認証情報。ApsaraVideo VOD の GetVideoPlayAuth API を呼び出して取得します。
authSource.region = @"Your region"; // このパラメータは、Player SDK V5.5.5.0 以降では非推奨です。プレーヤーが自動的に解析するため、リージョンを設定する必要はありません。SDK バージョン 5.5.5.0 より前のバージョンでは、このパラメータは必須です。ApsaraVideo VOD がアクティブ化されているリージョンを指定します。デフォルト値: cn-shanghai。
// authSource.authTimeout = 3600; // オプション。再生 URL の有効期間 (秒単位)。この値は、ApsaraVideo VOD コンソールで設定された URL 認証の有効期間を上書きします。このパラメータを設定しない場合、デフォルト値 3600 が使用されます。このパラメータを設定する場合は、再生が完了する前に再生 URL が期限切れにならないように、その値が実際の動画の長さより大きいことを確認してください。

// VidPlayerConfigGenerator を使用して config を作成します。
VidPlayerConfigGenerator* config = [[VidPlayerConfigGenerator alloc]init];
[config addVidPlayerConfigByStringValue:@"EncryptType" value:@"HLSEncryption"]; // オプション。このパラメータを HLSEncryption に設定すると、HLS標準暗号化された動画ストリームのみが返されます。
[config setHlsUriToken: @"token"]; // オプション。検証のために MtsHlsUriToken (ユーザートークン) を渡すには、このパラメータを使用します。
authSource.playConfig = [config generatePlayerConfig];

// 再生ソースを設定します。
[self.player setAuthSource:authSource];

VOD の VidSts

ApsaraVideo VOD の VidSts 方式を使用して HLS 標準暗号化で暗号化された動画を再生する場合、動画に非暗号化または標準トランスコードストリームも含まれている場合は、暗号化タイプを HLSEncryption に設定して、HLS 標準暗号化されたストリームのみを再生します。以下にコード例を示します。

重要

M3U8 標準暗号化の書き換え」を有効にした場合は、setHlsUriToken を呼び出してユーザートークンを設定する必要があります。

AVPVidStsSource *source = [[AVPVidStsSource alloc] init];
source.vid = @"Your video ID"; // 必須。ビデオ ID。
source.region = @"Your region"; // 必須。ApsaraVideo VOD がアクティブ化されているリージョン。デフォルト値: cn-shanghai。
source.securityToken = @"<yourSecurityToken>"; // 必須。セキュリティトークン。STS の AssumeRole API を呼び出して取得します。
source.accessKeySecret = @"<yourAccessKeySecret>"; // 必須。一時的な STS 認証情報の AccessKey Secret。STS の AssumeRole API を呼び出して取得します。
source.accessKeyId = @"<yourAccessKeyId>"; // 必須。一時的な STS 認証情報の AccessKey ID。STS の AssumeRole API を呼び出して取得します。
// source.authTimeout = 3600; // オプション。再生 URL の有効期間 (秒単位)。この値は、ApsaraVideo VOD コンソールで設定された URL 認証の有効期間を上書きします。このパラメータを設定しない場合、デフォルト値 3600 が使用されます。このパラメータを設定する場合は、再生が完了する前に再生 URL が期限切れにならないように、その値が実際の動画の長さより大きいことを確認してください。

// VidPlayerConfigGenerator を使用して config を作成します。
VidPlayerConfigGenerator* config = [[VidPlayerConfigGenerator alloc]init];
[config addVidPlayerConfigByStringValue:@"EncryptType" value:@"HLSEncryption"]; // オプション。このパラメータを HLSEncryption に設定すると、HLS標準暗号化された動画ストリームのみが返されます。
[config setHlsUriToken: @"token"]; // オプション。検証のために MtsHlsUriToken (ユーザートークン) を渡すには、このパラメータを使用します。
source.playConfig = [config generatePlayerConfig]; 

// 再生ソースを設定します。
[self.player setStsSource:source];

UrlSource

UrlSource 方式を使用して HLS 標準暗号化されたストリームを再生する場合、プレーヤーの設定は標準動画を再生する場合と同じです。追加のパラメータは必要ありません。

ApsaraVideo VOD の使用を推奨します。GetPlayInfo API を呼び出して動画の再生 URL を取得し、その URL をプレーヤーに渡すことができます。

重要

M3U8 標準暗号化の書き換え」を有効にした場合は、プレーヤーに渡す前に動画 URL に MtsHlsUriToken=<token> を追加する必要があります。このパラメータはクエリ文字列のどこにでも配置できます。

元の再生 URL の例: https://demo.aliyundoc.com/encrypt-stream****-hd.m3u8

プレーヤーに入力する URL の例: https://demo.aliyundoc.com/encrypt-stream****-hd.m3u8?MtsHlsUriToken=<token>

AVPUrlSource *urlSource = [[AVPUrlSource alloc] urlWithString:url]; // HLS標準暗号化が適用されたライブまたはオンデマンドストリームの再生 URL。
[self.player setUrlSource:urlSource];

Alibaba Cloud DRM 暗号化

説明

iOS プラットフォームでは、[self.player prepare] の前に、AliPlayerGlobalSettingssetFairPlayCertID メソッドをグローバルに1回呼び出して、証明書 ID を設定する必要があります。証明書 ID は、ApsaraVideo VOD コンソール > [設定管理] > [メディア処理設定] > [DRM 証明書管理] で取得できます。

 [AliPlayerGlobalSettings setFairPlayCertID:@"コンソールから取得した証明書 ID"];

VOD の VidSts

まず、「VOD の DRM 暗号化の設定」を参照して DRM 暗号化を設定します。ApsaraVideo VOD の VidSts 方式を使用して DRM 暗号化された動画を再生する場合、設定は標準動画を再生する場合と同じです。追加のパラメータは必要ありません

AVPVidStsSource *source = [[AVPVidStsSource alloc] init];
source.region = @"Your region"; // 必須。ApsaraVideo VOD がアクティブ化されているリージョン。デフォルト値: cn-shanghai。
source.vid = @"Your video ID"; // 必須。ビデオ ID。
source.securityToken = @"<yourSecurityToken>"; // 必須。セキュリティトークン。STS の AssumeRole API を呼び出して取得します。
source.accessKeySecret = @"<yourAccessKeySecret>"; // 必須。一時的な STS 認証情報の AccessKey Secret。STS の AssumeRole API を呼び出して取得します。
source.accessKeyId = @"<yourAccessKeyId>"; // 必須。一時的な STS 認証情報の AccessKey ID。STS の AssumeRole API を呼び出して取得します。
// source.authTimeout = 3600; // オプション。再生 URL の有効期間 (秒単位)。この値は、ApsaraVideo VOD コンソールで設定された URL 認証の有効期間を上書きします。このパラメータを設定しない場合、デフォルト値 3600 が使用されます。このパラメータを設定する場合は、再生が完了する前に再生 URL が期限切れにならないように、その値が実際の動画の長さより大きいことを確認してください。
 // 再生ソースを設定します。
 [self.player setStsSource:source]

ライブの LiveStsSource

まず、「ライブストリーミングの DRM 暗号化の設定」を参照して DRM 暗号化を設定します。LiveStsSource 方式を使用して DRM 暗号化されたライブストリームを再生するには、ストリーム URL と STS 認証情報を提供し、動画の暗号化タイプを ENCRYPTION_TYPE_FAIRPLAY に設定する必要があります。以下にコード例を示します。

  1. データソースを作成します。

    再生ソースとして AVPLiveStsSource を渡す必要があります。

    // LiveSts オブジェクトを作成し、encryptionType を ENCRYPTION_TYPE_FAIRPLAY に設定します。
    AVPLiveStsSource *liveStsSource = [[AVPLiveStsSource alloc] initWithUrl:@"暗号化されたライブストリーム URL" 
                                                                accessKeyId:@"一時的な AccessKey ID" 
                                                                accessKeySecret:@"一時的な AccessKey Secret" 
                                                                securityToken:@"セキュリティトークン" 
                                                                region:@"リージョン" 
                                                                domain:@"URLのストリーミングドメイン" 
                                                                app:@"ストリーミングのアプリケーション名" 
                                                                stream:@"ストリーム名" 
                                                                encryptionType:ENCRYPTION_TYPE_FAIRPLAY];// 必須。暗号化タイプを ENCRYPTION_TYPE_FAIRPLAY に設定します。
     // 再生ソースを設定します。
     [self.aliPlayer setLiveStsSource:liveStsSource];
     // ...
     // 再生の準備をします。
     [self.aliPlayer prepare];
  2. STS 認証情報の無効化を監視します。

    暗号化されたライブ再生中に、暗号化キーがローテーションされる場合があります。これが発生すると、プレーヤーは STS 認証情報を使用して新しいキーをリクエストします。無効な認証情報は再生を中断するため、認証情報の有効性を監視する必要があります。

     __weak typeof(self) weakSelf = self;
    [self.aliPlayer setVerifyStsCallback:^AVPStsStatus(AVPStsInfo info) {
        if (info が有効) {
            return Valid;
        }
        if (有効な STS 認証情報を取得できる) {
            getSTS(); // これは非同期または同期の操作です。
            return Pending;
        }
        [weakSelf.aliPlayer stop];
        return Invalid;
    }];
    説明

    新しい STS 認証情報を取得した後、updateLiveStsInfo メソッドを呼び出して更新する必要があります。新しい認証情報の取得に失敗した場合は、再生を停止することを推奨します。STS 認証情報を更新しない場合、プレーヤーは期限切れの認証情報を使用してキーをリクエストしようとし、画面の乱れや再生失敗を引き起こす可能性があります。

    [self.aliPlayer updateLiveStsInfo:self.liveStsSource.accessKeyId accKey:self.liveStsSource.accessKeySecret token:self.liveStsSource.securityToken region:self.liveStsSource.region];

サードパーティ DRM 暗号化

説明
  • この機能は、Player SDK V7.8.0 以降で利用できます。

  • FairPlay で暗号化された動画を再生するには、AppleAVPlayer を使用する必要があります。再生を開始する前に、[self.player setPreferPlayerName:@"AppleAVPlayer"] を呼び出してプレーヤーコアを切り替えます。DRM 暗号化されていない動画を再生する場合は、[self.player setPreferPlayerName:@""] を呼び出してデフォルトのコアに戻す必要があります。

FairPlay の UrlSource

説明
  • HLS プロトコル上の FairPlay スキームのみがサポートされています。

まず、「ライブパッケージング」を参照して DRM 暗号化を設定します。UrlSource 方式を使用して DRM 暗号化された動画を再生する場合、通常の動画と同じ設定を使用することに加えて、AVPDrmDelegate インターフェイスを実装して FairPlay 証明書と動画キーを取得する必要もあります。

@interface SimplePlayerViewController ()
@end
- (void)viewDidLoad {
    self.player = [[AliPlayer alloc] init];
    self.player.playerView = self.avpPlayerView.playerView;
    self.player.drmDelegate = self;
    if (現在の URL がサードパーティ DRM 動画用の場合) {
        [self.player setPreferPlayerName:@"AppleAVPlayer"];
    }
    // ...
}

// AVPDrmDelegate.requestCert および requestKey インターフェイスを実装し、サードパーティ DRM プロバイダーのドキュメントに従って証明書とキーを取得します。
// 次の例は、PallyCon から証明書とキーを取得する方法を示しています。詳細については、「https://pallycon.com/docs/en/multidrm」をご参照ください。
#pragma mark AVPDrmDelegate
- (NSData *)requestCert:(AliPlayer *)player {
    // 起動レイテンシーを削減するために、証明書を事前に取得してキャッシュすることもできます。その場合は、ここでキャッシュされた証明書を返します。
    // 証明書データが無効な場合、プレーヤーはエラーを報告します。コンソールでより詳細なエラー情報を確認できます。
    // SITE_ID をご自身のサイト ID に置き換えてください。
    const char* url = "https://license.pallycon.com/ri/fpsKeyManager.do?siteId=SITE_ID";

    // DRM プロバイダーの要求に応じて、HTTP GETリクエストで FairPlay 証明書を要求します。
    // このスレッドを長時間ブロックしないようにしてください。
    NSData* responseData = [self performAsyncHttpGet:url];
    if (!responseData) {
        // 例外を処理します。プレーヤーはエラーを報告します。
        return nil;
    }
    
    // レスポンスデータは、プレーヤーに返す前に Base64 デコードする必要があります。
    NSString *base64String = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
    return [self decodeBase64String:base64String];
}

- (NSData *)requestKey:(AliPlayer *)player data:(NSData *)data {
    // DRM プロバイダーの要求に応じて、HTTP POSTリクエストでキー情報を要求します。
    NSString *urlString = [NSString stringWithFormat:@"https://license-global.pallycon.com/ri/licenseManager.do"];
    const char *url = [urlString UTF8String];

    // TOKEN_ID をご自身のトークン ID に置き換えてください。
    NSString *headerString = [NSString stringWithFormat:@"pallycon-customdata-v2: TOKEN_ID"];
    const char* headers[] = {
        [headerString UTF8String]
    };
    int headerCount = sizeof(headers) / sizeof(headers[0]);

    // このスレッドを長時間ブロックしないようにしてください。
    NSData* responseData = [self performAsyncHttpPost:url
                                             headers:headers
                                         headerCount:headerCount
                                                data:data];
    if (!responseData) {
        // 例外を処理します。プレーヤーはエラーを報告します。
        return nil;
    }

    // トークンの response_format が `original` に設定されている場合は、レスポンスを直接返します。それ以外の場合は、レスポンスを解析してから返す必要があります。
    // 詳細については、「https://pallycon.com/docs/en/multidrm/license/license-token/#token-json」をご参照ください。
    // レスポンスの形式と構造は、プロバイダー間で大きく異なる場合があります。レスポンスを慎重に確認してください。レスポンスを復号に使用できない場合、プレーヤーはエラーを報告します。
    return responseData;
}

Flutter クライアント

説明

Flutter クライアントは DRM 暗号化をサポートしていません。

操作手順

Flutter プレーヤーをアプリケーションに統合し、動画再生を有効にします。手順とサンプルコードは次のとおりです:

  1. Alibaba Cloud Player SDK for Flutter を統合します。

    手順については、「SDK の統合」をご参照ください。

  2. 動画を再生するためのプレーヤーを作成します。

    手順については、「基本機能」をご参照ください。「手順 3. 再生ソースの作成」では、要件に応じて次のいずれかの方法を選択してください。

Alibaba Cloud 独自暗号化

VidAuth

ApsaraVideo for VOD の VidAuth 方式で独自暗号化された HLS または MP4 動画を再生する場合、その動画に非暗号化または標準トランスコードストリームも含まれている場合は、暗号化タイプを AliyunVoDEncryption に設定して、独自暗号化されたストリームのみを再生できます

FlutterAliplayer.setEncryptType(EncryptType.AliyunVoDEncryption); // オプション。これを AliyunVoDEncryption に設定すると、独自暗号化された動画ストリームのみが返されます。
FlutterAliplayer.generatePlayerConfig().then((value) {
          this.fAliplayer.setVidAuth(
              vid: "動画 ID",
              region: "リージョン ID", // 必須。ApsaraVideo for VOD が有効なリージョン。デフォルト:cn-shanghai。
              playAuth: "<yourPlayAuth>", // 必須。PlayAuth。ApsaraVideo for VOD の GetVideoPlayAuth API を呼び出して取得します。
              playConfig: value);
});

VidSts

ApsaraVideo for VOD の VidSts 方式で独自暗号化された HLS または MP4 動画を再生する場合、その動画に非暗号化または標準トランスコードストリームも含まれている場合は、暗号化タイプを AliyunVoDEncryption に設定して、独自暗号化されたストリームのみを再生できます

FlutterAliplayer.setEncryptType(EncryptType.AliyunVoDEncryption); // オプション。これを AliyunVoDEncryption に設定すると、独自暗号化された動画ストリームのみが返されます。
FlutterAliplayer.generatePlayerConfig().then((value) {
          this.fAliplayer.setVidSts(
              vid: "動画 ID",
              region: "リージョン ID",
              accessKeyId: "<yourAccessKeyId>",
              accessKeySecret: "<yourAccessKeySecret>",
              securityToken: "<yourSecurityToken>",
              playConfig: value);
        });

ライセンスベースの独自暗号化

UrlSource

説明

Flutter プレーヤー SDK は、v6.8.0 以降で MP4 動画の UrlSource を使用したライセンスベースの独自暗号化をサポートし、v6.17.0 以降で HLS 動画 (シングルビットレートおよびアダプティブビットレート) をサポートします。

ライセンスベースの独自暗号化を使用して暗号化された HLS または MP4 形式の動画を UrlSource ベースの再生で再生する場合、「オーディオまたはビデオの再生 URL の取得」 API を呼び出して再生 URL を取得します。取得した URL に etavirp_nuyila=1 を追加してからプレーヤーに渡す必要があります。(このパラメーターは MP4 ファイルにのみ必要です。HLS ファイルの場合は、元の動画 URL を直接使用できます。) プレーヤー SDK の設定は標準動画と同じで、追加のパラメーターは不要です。

再生 URL の例 1: https://example.aliyundoc.com/test.mp4?etavirp_nuyila=1

再生 URL の例 2: https://example.aliyundoc.com/test.mp4?auth_key=xxxxx&etavirp_nuyila=1

// 再生 URL。
String playURL = "https://example.aliyundoc.com/test.mp4?etavirp_nuyila=1"

// プレーヤーインスタンスを作成します。
FlutterAliplayer fAliplayer = FlutterAliPlayerFactory.createAliPlayer();
fAliplayer.setUrl(playURL);
fAliplayer.prepare();

// リストプレーヤー。
FlutterAliListPlayer fAliListPlayer = FlutterAliPlayerFactory.createAliListPlayer();
fAliListPlayer.addUrlSource(playURL,uid);
fAliListPlayer.moveTo("uid");

// プリロード。
FlutterAliPlayerMediaLoader fAliPlayerMediaLoader = FlutterAliPlayerMediaLoader();
fAliPlayerMediaLoader.load(playURL,"duration");

HLS 標準暗号化

VidAuth

ApsaraVideo for VOD の VidAuth 方式で HLS 標準暗号化動画を再生する場合、その動画に他の暗号化タイプまたは非暗号化のトランスコード済みストリームも含まれている場合は、暗号化タイプを HLSEncryption に設定して、HLS 標準暗号化ストリームのみを再生できます。コード例は次のとおりです:

重要

M3U8 標準暗号化リライトが有効になっている場合は、setHlsUriToken を呼び出してユーザートークンを渡す必要があります。

FlutterAliplayer.setEncryptType(EncryptType.HLSEncryption); // オプション。これを HLSEncryption に設定すると、HLS 標準暗号化動画ストリームのみが返されます。
FlutterAliplayer.setHlsUriToken("token"); // オプション。MtsHlsUriToken を検証する必要がある場合は、このパラメーターを使用してトークンを渡します。
FlutterAliplayer.generatePlayerConfig().then((value) {
          this.fAliplayer.setVidAuth(
              vid: "動画 ID",
              region: "リージョン ID", // 必須。ApsaraVideo for VOD が有効なリージョン。デフォルト:cn-shanghai。
              playAuth: "<yourPlayAuth>", // 必須。PlayAuth。ApsaraVideo for VOD の GetVideoPlayAuth API を呼び出して取得します。
              playConfig: value);
});

VidSts

ApsaraVideo for VOD の VidSts 方式で HLS 標準暗号化動画を再生する場合、その動画に他の暗号化タイプまたは非暗号化のトランスコード済みストリームも含まれている場合は、暗号化タイプを HLSEncryption に設定して、HLS 標準暗号化ストリームのみを再生できます。コード例は次のとおりです:

重要

M3U8 標準暗号化リライトが有効になっている場合は、setHlsUriToken を呼び出してユーザートークンを渡す必要があります。

FlutterAliplayer.setEncryptType(EncryptType.HLSEncryption); // オプション。これを HLSEncryption に設定すると、HLS 標準暗号化動画ストリームのみが返されます。
FlutterAliplayer.setHlsUriToken("token"); // オプション。MtsHlsUriToken を検証する必要がある場合は、このパラメーターを使用してトークンを渡します。
FlutterAliplayer.generatePlayerConfig().then((value) {
          this.fAliplayer.setVidSts(
              vid: "動画 ID",
              region: "リージョン ID",
              accessKeyId: "<yourAccessKeyId>",
              accessKeySecret: "<yourAccessKeySecret>",
              securityToken: "<yourSecurityToken>",
              playConfig: value);
        });

UrlSource

UrlSource 方式を使用して HLS 標準暗号化のライブまたはオンデマンドストリームを再生する場合、プレーヤー SDK の設定は標準動画と同じです。

再生 URL を取得するには、ApsaraVideo for VOD の GetPlayInfo API を呼び出すことを推奨します。

重要

M3U8 標準暗号化リライトを有効にした後、プレーヤーに渡す前に、再生 URL に MtsHlsUriToken=<token> パラメーターを追加する必要があります。このパラメーターは、URL のクエリ文字列のどこにでも配置できます

元の再生 URL の例: https://demo.aliyundoc.com/encrypt-stream****-hd.m3u8

プレーヤーに渡す URL の例: https://demo.aliyundoc.com/encrypt-stream****-hd.m3u8?MtsHlsUriToken=<token>

// プレーヤーインスタンスを作成します。
FlutterAliplayer fAliplayer = FlutterAliPlayerFactory.createAliPlayer();
// 再生 URL は、HLS 標準暗号化のライブまたはオンデマンドストリーム用です。
fAliplayer.setUrl("再生 URL");
fAliplayer.prepare();

よくある質問

暗号化プロセス中の一般的な問題については、「動画暗号化 FAQ」をご参照ください。

関連ドキュメント