ApsaraVideo VOD と ApsaraVideo Live は、ApsaraVideo Player SDK と組み合わせて動画の復号と再生に使用できる複数の動画暗号化方式を提供します。この方法により、動画コンテンツのホットリンク、不正ダウンロード、不正配布を効果的に防止できます。このトピックでは、ApsaraVideo Player SDK を使用して、Alibaba Cloud 独自暗号化、HLS 暗号化、またはデジタル著作権管理 (DRM) 暗号化を使用して暗号化された動画を再生する方法について説明します。
動画暗号化の概要
ApsaraVideo VOD は、動画コンテンツのホットリンク、不正ダウンロード、不正配布を防止するための包括的なコンテンツセキュリティメカニズムを提供します。このセキュリティメカニズムには、アクセス制御、URL 署名、リモート認証、動画暗号化、セキュアダウンロードなどの対策が含まれます。
アクセス制御、URL 署名、リモート認証などのセキュリティメカニズムの詳細については、「動画セキュリティの概要」をご参照ください。このトピックでは、3 種類の暗号化を使用した動画の再生に焦点を当てています。次の表に、3 種類の暗号化方式について説明します。
セキュリティメカニズム | セキュリティメソッド | 特徴 | セキュリティレベル | 使いやすさ |
動画の暗号化 | Alibaba Cloud 独自暗号化 | 独自の暗号化アルゴリズムを使用し、安全な伝送を保証するクラウドネイティブな動画暗号化ソリューションです。 | 高 | 低。簡単な設定と ApsaraVideo Player との統合が必要です。 |
HLS 暗号化 | AES-128 を使用してコンテンツを暗号化する、汎用的な HTTP Live Steaming (HLS) 暗号化ソリューションです。すべての HLS プレーヤーと互換性がありますが、キーは簡単に盗まれる可能性があります。 | 高 | 高。独自のキー管理とトークン発行サービスを構築し、安全な伝送を保証する必要があります。 | |
商用 DRM | Apple FairPlay と Google Widevine をネイティブにサポートします。高レベルのセキュリティを提供し、ほとんどの著作権コンテンツプロバイダーの要件を満たします。 | 高 | 高。ライセンスリクエスト数に基づいて課金されます。サードパーティの DRM 暗号化については、サードパーティサービスの課金基準をご参照ください。ApsaraVideo Player SDK との統合が必要です。 |
暗号化再生における ApsaraVideo Player SDK の互換性
ApsaraVideo Player SDK for Web を使用して暗号化された動画を再生する前に、さまざまなブラウザや暗号化機能との互換性を理解する必要があります。たとえば、ApsaraVideo Player SDK for Web は、主要なモバイルブラウザで独自暗号化を使用した動画の再生をサポートしています。詳細については、「ブラウザの互換性」および「機能の互換性」をご参照ください。✔️ は機能がサポートされていることを示し、❌ は機能がサポートされていないことを示します。
ApsaraVideo Player SDK の最新バージョンをダウンロードして、機能の互換性を確保できます。詳細については、「SDK の概要」をご参照ください。
注:HLS のコンテナフォーマットは M3U8 です。
ターミナル | 再生方法 | 独自暗号化 (HLS) | ライセンスベースの独自暗号化 (HLS) | ライセンスベースの独自暗号化 (MP4) | 独自暗号化 (Live FLV) | HLS 暗号化 | Alibaba Cloud DRM 暗号化 | サードパーティ DRM 暗号化 |
Web | VOD UrlSource | ❌ | ❌ | ❌ | ❌ | ✔️ | ❌ | ✔️ |
VOD VidAuth | ✔️ | ❌ | ❌ | ❌ | ✔️ | ❌ | ❌ | |
VOD VidSts | ❌ | ❌ | ❌ | ❌ | ✔️ | ✔️ | ❌ | |
Live UrlSource | ❌ | ❌ | ❌ | ❌ | ✔️ | ❌ | ✔️ | |
Live LiveStsSource | ✔️ | ✔️ | ❌ | ❌ | ❌ | ✔️ | ❌ | |
ネイティブ (iOS/Android/Flutter) | VOD UrlSource | ✔️ | ✔️ SDK V6.17.0 以降が必要です。 | ✔️ SDK V6.8.0 以降が必要です。 | ❌ | ✔️ | ❌ | ✔️ SDK V7.8.0 以降が必要です。Flutter はサポートされていません。 |
VOD VidAuth | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ | |
VOD VidSts | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ✔️ Flutter はサポートされていません。 | ❌ | |
Live UrlSource | ❌ | ❌ | ❌ | ❌ | ✔️ | ❌ | ✔️ SDK V7.8.0 以降が必要です。Flutter はサポートされていません。 | |
Live LiveStsSource | ✔️ | ✔️ | ❌ | ✔️ | ❌ | ✔️ Flutter はサポートされていません。 | ❌ |
暗号化メソッド
Alibaba Cloud 独自暗号化
Alibaba Cloud 独自暗号化は動画データを暗号化します。動画がローカルにダウンロードされても、動画は暗号化されたままです。この方法により、悪意のある再配布、漏洩、ホットリンクを効果的に防止できます。詳細については、「Alibaba Cloud 独自暗号化」をご参照ください。
ApsaraVideo Player SDK は、復号ロジックとサーバー側のインタラクションをカプセル化しています。暗号化されたトランスコーディングを設定し、プレーヤーを統合することで、低コストで暗号化再生を実装できます。
Alibaba Cloud 独自暗号化は無料サービスですが、動画のトランスコーディングが必要です。トランスコーディング操作には料金が発生します。課金の詳細については、「メディアトランスコーディングの課金」をご参照ください。
独自暗号化の設定
Alibaba Cloud 独自暗号化の手順と設定の詳細については、「使用方法」をご参照ください。
制限
Alibaba Cloud 独自暗号化は、HLS、FLV、MP4 形式の動画をサポートしています。これらの暗号化された動画は、ApsaraVideo Player を使用してのみ再生できます。Web では、HLS 再生のみがサポートされています。ネイティブクライアントでは、すべてのフォーマットでの再生がサポートされています。
Alibaba Cloud ライセンスベースの独自暗号化
Alibaba Cloud ライセンスベースの独自暗号化は、独自暗号化を基盤として再生のセキュリティを確保します。暗号化された動画 URL から直接再生できるようにすることで、再生開始を高速化します。この方法は、ショートビデオやショートビデオシリーズに適しています。
Alibaba Cloud ライセンスベースの独自暗号化は無料サービスですが、動画のトランスコーディングが必要です。トランスコーディング操作には料金が発生します。課金の詳細については、「メディアトランスコーディングの課金」をご参照ください。
独自暗号化の設定
Alibaba Cloud 独自暗号化の手順と設定の詳細については、「使用方法」をご参照ください。
制限
Alibaba Cloud ライセンスベースの独自暗号化は、HLS および MP4 形式の動画をサポートしています。これらの暗号化された動画は、ApsaraVideo Player を使用してのみ再生できます。
HLS 暗号化
HLS 暗号化は、AES-128 を使用して動画コンテンツを暗号化します。自社開発またはオープンソースのプレーヤーを含む、すべての HLS プレーヤーと互換性があります。この方法は高い柔軟性を提供しますが、参入障壁が高く、セキュリティも低くなります。詳細については、「HLS 暗号化」をご参照ください。
HLS 暗号化は無料サービスですが、動画のトランスコーディングが必要です。トランスコーディング操作には料金が発生します。課金の詳細については、「メディアトランスコーディングの課金」をご参照ください。
HLS 暗号化の構成
HLS 暗号化の手順と設定の詳細については、「統合手順」をご参照ください。
制限
HLS 暗号化は、さまざまな HLS プレーヤーと互換性があります。独自のプレーヤーを選択できます。このトピックでは、ApsaraVideo Player を例として、HLS 暗号化された動画を再生する方法を示します。ApsaraVideo Player はトークン渡しをサポートしています。Alibaba Cloud CDN は、HLS ファイル内の復号 URI を動的に調整し、ビジネス認証のためにユーザートークンを含めます。
Alibaba Cloud DRM 暗号化
ApsaraVideo VOD は、業界標準の DRM 暗号化をサポートしています。この機能により、著作権で保護された動画のワンストップ管理が可能になり、Widevine および FairPlay ソリューションと互換性があります。詳細については、「DRM 暗号化」をご参照ください。
DRM 暗号化はトランスコーディングを通じて実装されます。料金は、動画が出力される際のトランスコーディングに対してのみ発生します。この段階では DRM 暗号化料金は発生しません。DRM 暗号化料金は、ターミナルが DRM 暗号化された動画の再生をリクエストしたときに発生します。再生クライアントは、動画のライセンスリクエスト数に基づいて課金されます。課金の詳細については、「DRM 課金」をご参照ください。
DRM 暗号化の構成
ApsaraVideo Live および ApsaraVideo VOD コンソールで DRM 暗号化を有効にできます。詳細については、「ライブストリーミングの DRM 暗号化を設定」および「VOD の DRM 暗号化を設定」をご参照ください。
制限
DRM で暗号化された動画は、ApsaraVideo Player を使用してのみ再生できます。
サードパーティ DRM 暗号化
ApsaraVideo VOD は、業界標準の DRM 暗号化をサポートしています。Intelligent Media Services での動画制作、サードパーティの DRM 暗号化から、ApsaraVideo Player SDK での復号と再生まで、エンドツーエンドのサポートを提供します。
DRM 暗号化はトランスコーディングを通じて実装されます。料金は、動画が出力される際のトランスコーディングに対してのみ発生します。この段階では DRM 暗号化料金は発生しません。DRM 暗号化料金は、ターミナルが DRM 暗号化された動画の再生をリクエストしたときに発生します。再生クライアントは、動画のライセンスリクエスト数に基づいて課金されます。課金の詳細については、「DRM 課金」をご参照ください。
DRM 暗号化の構成
この機能は、Intelligent Media Services コンソールで有効にできます。詳細については、「ライブパッケージング」および「VOD パッケージング」をご参照ください。
Web
ApsaraVideo Player SDK for Web を使用する前に、さまざまなブラウザとの互換性、および Alibaba Cloud 独自暗号化を使用した動画の再生のサポートについて理解する必要があります。詳細は次のとおりです:
H5 モードは、デスクトップおよびモバイルブラウザをサポートしています。詳細については、「機能の互換性」をご参照ください。
セキュリティ上の理由から、Alibaba Cloud 独自暗号化では、実際の暗号化された動画をデバッグに使用することはできません。
プロシージャ
ApsaraVideo Player を Web ページに埋め込んで動画を再生できます。
ApsaraVideo Player SDK for Web をページにインポートする方法の詳細については、「クイック統合」をご参照ください。
暗号化方式を選択し、再生を開始します。
ApsaraVideo Player SDK for Web を Web ページに埋め込んで動画を再生できます。次のコードは一例です。
Alibaba Cloud 独自暗号化
独自暗号化再生 - VOD VidAuth 再生 (HLS)
VOD VidAuth 方式を使用して独自暗号化された動画を再生する場合、`encryptType` パラメーターを 1 に設定して独自暗号化を有効にする必要があります。これは通常の動画の再生には必要ありません。
<!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 操作を呼び出して取得できます。
encryptType: 1, // 必須。独自暗号化ストリームを再生するには、このパラメーターを 1 に設定します。他のケースではこのパラメーターを設定する必要はありません。
playConfig:{EncryptType:'AliyunVoDEncryption'}, // 出力 M3U8 ストリームに他の非独自暗号化ストリームが含まれている場合にこのパラメーターを指定します。
// authTimeout: 7200, // オプション。再生 URL の有効期間 (秒)。この値は、ApsaraVideo VOD コンソールで設定された URL 署名の有効期間を上書きします。このパラメーターを設定しない場合、デフォルト値 7200 が使用されます。このパラメーターを設定する場合は、再生が完了する前に再生 URL が期限切れにならないように、実際の動画の長さよりも大きい値を設定してください。
},function(player){
console.log('プレーヤーが作成されました。')
});
</script>
</body>
</html>独自暗号化再生 - Live LiveStsSource 再生 (HLS)
LiveStsSource 方式を使用して独自暗号化された動画を再生するには、URL と STS 一時認証情報を渡す必要があります。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>ライブ独自暗号化再生テストケース</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 に設定します。
source: '<your live stream url>',// 必須。独自暗号化された HLS ライブストリームの再生 URL。
accessKeyId: '<your AccessKey ID>',// 必須。一時 STS トークンの AccessKey ID。STS の AssumeRole 操作を呼び出してこの ID を生成できます。
accessKeySecret: '<your AccessKey Secret>',// 必須。一時 STS トークンの AccessKey Secret。STS の AssumeRole 操作を呼び出してこのシークレットを生成できます。
securityToken: '<your STS token>',// 必須。STS トークン。STS の AssumeRole 操作を呼び出してこのトークンを生成できます。
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。
},function(player){
console.log('プレーヤーが作成されました。')
});
</script>
</body>
</html>
iOS 17.1 より前のバージョンのブラウザで独自暗号化 VOD 再生をサポートするには、追加のプレーヤープラグインスクリプトをデプロイする必要があります。手順は次のとおりです:
仕組み:iOS 17.1 より前のバージョンの独自暗号化では、Service Worker 技術を使用した追加のプラグインが必要です。ブラウザのセキュリティポリシーにより、Web サイトはその Web サイトと同一オリジンの Service Worker スクリプトにのみアクセスできます。したがって、プレーヤープラグインスクリプトを Web サイトと同じドメインにデプロイする必要があります。
次の URL からスクリプトをダウンロードします:https://g.alicdn.com/apsara-media-box/imp-web-player/<version number>/aliplayer-worker-min.js
スクリプトをデプロイします。たとえば、独自暗号化動画を再生する Web サイトが https://www.aliyun.com/a/b.html の場合、スクリプトを https://www.aliyun.com/a/aliplayer-worker-min.js にデプロイする必要があります。つまり、スクリプトは現在の Web サイトと同じディレクトリにある必要があります。
プレーヤーを初期化するときにこの URL を渡します:
new Aliplayer({ // ...その他のパラメーター swScriptURL: 'https://www.aliyun.com/a/aliplayer-worker-min.js' // プラグインスクリプトの完全な URL を入力します。この URL にアクセスできることを確認してください。 })
注: プレーヤーのバージョンとプラグインのバージョンが同じであることを確認してください。
Web ページが uni-app アプリケーションなどのカスタムパッケージ化された iOS アプリケーションで実行される場合、アプリケーションの Info.plist ファイルの WKAppBoundDomains に Web サイトのドメインを追加する必要があります。これにより、WKWebView で Service Worker 機能が有効になります。詳細については、「App-Bound Domains」をご参照ください。
HLS 暗号化
HLS 暗号化再生 - VOD VidAuth 再生
VOD VidAuth 方式を使用して HLS 暗号化された動画を再生する場合、動画に他の種類の暗号化ストリームや通常のトランスコーディングストリームも含まれている場合は、動画の暗号化タイプを 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 暗号化された動画ストリームのみが返されます。
},
});HLS 暗号化再生 - VOD VidSts 再生
VOD VidSts 方式を使用して HLS 暗号化された動画を再生する場合、動画に他の種類の暗号化ストリームや通常のトランスコーディングストリームも含まれている場合は、動画の暗号化タイプを HLSEncryption に設定して HLS 暗号化ストリームをフィルタリングできます。次のコードは一例です。
let player = new Aliplayer({
id: 'J_prismPlayer',
vid : '<your video ID>', // 必須。オーディオまたはビデオの ID は、コンソール ([メディア資産] > [オーディオ/ビデオ]) で取得するか、オーディオまたはビデオのアップロード後にサーバー側の API 操作 (SearchMedia) を呼び出して取得できます。例:1e067a2831b641db90d570b6480f****。
accessKeyId: '<your AccessKey ID>', // 必須。STS トークンが生成されたときに返される、一時 STS トークンの AccessKey ID。
securityToken: '<your STS token>', // 必須。STS トークン。STS の AssumeRole 操作を呼び出してこのトークンを生成できます。
accessKeySecret: '<your AccessKey Secret>', // 必須。STS トークンが生成されたときに返される、一時 STS トークンの AccessKey Secret。
region: '<region of your video>', // 必須。メディア資産が配置されているリージョン。例:cn-shanghai、eu-central-1、ap-southeast-1。
playConfig: { // オプション。
MtsHlsUriToken: '', // オプション。このパラメーターを使用して、検証のために MtsHlsUriToken (ユーザートークン) を渡します。
EncryptType: 'HLSEncryption', // オプション。暗号化タイプを HLSEncryption に設定すると、HLS 暗号化された動画ストリームのみが返されます。
},
};HLS 暗号化再生 - UrlSource 再生
ライブまたは VOD の UrlSource 方式を使用して HLS 暗号化された動画を再生する場合、設定は通常の動画の再生と同じです。追加のパラメーターは必要ありません。
let player = new Aliplayer({
id:'J_prismPlayer',
source:'<your play URL>', // 再生 URL。ライブまたは VOD の URL を指定できます。
isLive: true, // ライブストリームかどうかを指定します。
});DRM 暗号化
DRM 暗号化再生 - VOD VidSts 再生
VOD VidSts 方式を使用して DRM 暗号化された動画を再生する場合、`isDrm` パラメーターを true に設定して DRM 暗号化を有効にする必要があります。これは通常の動画の再生には必要ありません。
<!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 操作を呼び出してこの ID を生成できます。
securityToken: '<your STS token>',// 必須。STS トークン。STS の AssumeRole 操作を呼び出してこのトークンを生成できます。
accessKeySecret: '<your AccessKey Secret>',// 必須。一時 STS トークンの AccessKey Secret。STS の AssumeRole 操作を呼び出してこのシークレットを生成できます。
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>DRM 暗号化再生 - Live LiveStsSource 再生
LiveStsSource 方式を使用して DRM 暗号化された動画を再生するには、URL と STS 一時認証情報を渡す必要があります。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>ライブ 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 操作を呼び出してこの ID を生成できます。
securityToken: '<your STS token>',// 必須。STS トークン。STS の AssumeRole 操作を呼び出してこのトークンを生成できます。
accessKeySecret: '<your AccessKey Secret>',// 必須。一時 STS トークンの AccessKey Secret。STS の AssumeRole 操作を呼び出してこのシークレットを生成できます。
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
プロシージャ
ApsaraVideo Player for Android をアプリケーションに迅速に統合して動画を再生できます。手順とサンプルコードは次のとおりです:
Android 用 ApsaraVideo Player SDK を統合します。
詳細については、「SDK の統合」をご参照ください。
プレーヤーを作成して動画を再生します。
プレーヤーの作成手順については、「基本機能」をご参照ください。「ステップ 3. DataSource の作成」では、要件に基づいて以下のいずれかのメソッドを選択してデータソースを作成します。
Alibaba Cloud 独自暗号化
注
トランスコーディングテンプレートを作成し、動画をトランスコーディングした後、URL ベースの再生で Alibaba Cloud 独自暗号化を使用して暗号化された HLS 動画を再生できます。トランスコーディングの前に、同じアカウントでライセンスをバインドする必要があります。詳細については、「ライセンスの管理」をご参照ください。その後、EncryptType パラメーターを使用してトランスコーディングテンプレートグループを作成できます。一例を次に示します:
テンプレート作成後、コンソールで変更または保存することはできません。そうしないと、暗号化方式が上書きされます。
[{
"TranscodeTemplateId": "",
"TemplateName": "740PH264HLS_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"
}
}]独自暗号化再生 - VOD VidAuth 再生 (HLS + MP4)
VOD VidAuth 方式を使用して独自暗号化された HLS または MP4 動画を再生する場合、動画に他の種類の暗号化ストリームや通常のトランスコーディングストリームも含まれている場合は、動画の暗号化タイプを AliyunVoDEncryption に設定して独自暗号化ストリームをフィルタリングできます。
VidAuth vidAuth = new VidAuth();
VidPlayerConfigGen vidPlayerConfigGen = new VidPlayerConfigGen();
vidPlayerConfigGen.setEncryptType(VidPlayerConfigGen.EncryptType.AliyunVoDEncryption);// オプション。暗号化タイプを AliyunVoDEncryption に設定すると、独自暗号化された動画ストリームのみが返されます。
vidAuth.setPlayConfig(vidPlayerConfigGen);
vidAuth.setVid("Vid info");// 必須。動画 ID。
vidAuth.setPlayAuth("<yourPlayAuth>");// 必須。再生認証情報。ApsaraVideo VOD の GetVideoPlayAuth 操作を呼び出してこの認証情報を生成できます。
vidAuth.setRegion("Region");// このパラメーターは ApsaraVideo Player SDK V5.5.5.0 以降では非推奨です。リージョンを設定する必要はありません。プレーヤーが自動的にリージョンを解析します。以前のバージョンでは、このパラメーターは必須です。ApsaraVideo VOD が有効化されているリージョン。デフォルト値は cn-shanghai です。
// vidAuth.setAuthTimeout(3600); // オプション。再生 URL の有効期間 (秒)。この値は、ApsaraVideo VOD コンソールで設定された URL 署名の有効期間を上書きします。このパラメーターを設定しない場合、デフォルト値 3600 が使用されます。このパラメーターを設定する場合は、再生が完了する前に再生 URL が期限切れにならないように、実際の動画の長さよりも大きい値を設定してください。
aliPlayer.setDataSource(vidAuth);独自暗号化再生 - VOD VidSts 再生 (HLS + MP4)
VOD VidSts 方式を使用して独自暗号化された HLS または MP4 動画を再生する場合、動画に他の種類の暗号化ストリームや通常のトランスコーディングストリームも含まれている場合は、動画の暗号化タイプを AliyunVoDEncryption に設定して独自暗号化ストリームをフィルタリングできます。
VidSts vidSts = new VidSts();
VidPlayerConfigGen vidPlayerConfigGen = new VidPlayerConfigGen();
vidPlayerConfigGen.setEncryptType(VidPlayerConfigGen.EncryptType.AliyunVoDEncryption);// オプション。暗号化タイプを AliyunVoDEncryption に設定すると、独自暗号化された動画ストリームのみが返されます。
vidSts.setPlayConfig(vidPlayerConfigGen);
vidSts.setVid("Vid info");// 必須。動画 ID。
vidSts.setAccessKeyId("<yourAccessKeyId>");// 必須。一時 STS トークンの AccessKey ID。STS の AssumeRole 操作を呼び出してこの ID を生成できます。
vidSts.setAccessKeySecret("<yourAccessKeySecret>");// 必須。一時 STS トークンの AccessKey Secret。STS の AssumeRole 操作を呼び出してこのシークレットを生成できます。
vidSts.setSecurityToken("<yourSecurityToken>");// 必須。STS トークン。STS の AssumeRole 操作を呼び出してこのトークンを生成できます。
vidSts.setRegion("Region");// 必須。ApsaraVideo VOD が有効化されているリージョン。デフォルト値は cn-shanghai です。
// vidSts.setAuthTimeout(3600); // オプション。再生 URL の有効期間 (秒)。この値は、ApsaraVideo VOD コンソールで設定された URL 署名の有効期間を上書きします。このパラメーターを設定しない場合、デフォルト値 3600 が使用されます。このパラメーターを設定する場合は、再生が完了する前に再生 URL が期限切れにならないように、実際の動画の長さよりも大きい値を設定してください。
aliPlayer.setDataSource(vidSts);独自暗号化再生 - Live LiveStsSource 再生 (HLS + FLV)
LiveStsSource 方式を使用して独自暗号化された HLS または FLV 動画を再生するには、URL と STS 認証情報を渡し、動画の暗号化タイプを AliEncryption に設定する必要があります。次のコードは一例です。
データソースを作成します。
再生ソースとして AVPLiveStsSource を渡す必要があります。
// 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 操作を呼び出してこの ID を生成できます。 liveSts.setAccessKeySecret("<your AccessKey Secret>");// 必須。一時 STS トークンの AccessKey Secret。STS の AssumeRole 操作を呼び出してこのシークレットを生成できます。 liveSts.setSecurityToken("<your STS token>");// 必須。STS トークン。STS の AssumeRole 操作を呼び出してこのトークンを生成できます。 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();STS トークンの無効化をリッスンします。
暗号化されたライブ再生中に、暗号化キーが変更されることがあります。キーが変更されると、STS を使用して最新のキーがリクエストされます。STS トークンが有効かどうかをリッスンする必要があります。無効なトークンは、暗号化されたライブストリームの再生に影響します。
mAliyunVodPlayer.setOnVerifyTimeExpireCallback(new AliPlayer.OnVerifyTimeExpireCallback() { @Override public AliPlayer.Status onVerifySts(StsInfo info) { // 次の擬似コードを独自の実装に置き換えてください。 if(info is valid){ return IPlayer.StsStatus.Valid; } // 次の擬似コードを独自の実装に置き換えてください。 if(a new valid STS can be obtained){ obtainSTS(); // これは非同期または同期呼び出しにすることができます。 return IPlayer.StsStatus.Pending; } // info が無効で、最新の STS を取得できない場合は、表示エラーを防ぐために再生を停止することを推奨します。 mAliyunVodPlayer.stop(); return IPlayer.StsStatus.Invalid; } @Override public AliPlayer.Status onVerifyAuth(VidAuth auth) { return AliPlayer.Status.Valid; } });説明STS トークンを取得した後、
updateLiveStsInfoメソッドを呼び出して STS 情報を更新する必要があります。トークンの取得に失敗した場合は、再生を停止することを推奨します。STS 情報を更新しない場合、プレーヤーはタイムアウト後も以前の STS トークンを使用してキーを取得し続けます。STS トークンが無効な場合、画面の乱れや再生の失敗が発生する可能性があります。mAliyunVodPlayer.updateStsInfo(stsInfo);
Alibaba Cloud ライセンスベースの独自暗号化
注
Alibaba Cloud ライセンスベースの独自暗号化で暗号化された HLS 動画は、トランスコーディングテンプレートを使用してトランスコーディングされた後、URL を使用して再生できます。トランスコーディングの前に、同じアカウントでライセンスをアタッチする必要があります。詳細については、「ライセンスの管理」をご参照ください。その後、EncryptType パラメーターを使用してトランスコーディングテンプレートグループを作成できます。次の例をご参照ください:
テンプレート作成後、コンソールで変更または保存することはできません。そうしないと、暗号化方式が上書きされます。
[{
"TranscodeTemplateId": "",
"TemplateName": "740PH264HLS_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"
}
}]ライセンスベースの独自暗号化再生 - VOD UrlSource 再生 (HLS + MP4)
ApsaraVideo Player SDK for Android V6.8.0 以降は、VOD UrlSource 方式を使用したライセンスベースの独自暗号化 MP4 動画の再生をサポートしています。V6.17.0 以降は、ライセンスベースの独自暗号化 HLS 動画 (シングルおよびマルチビットレート) をサポートしています。
VOD UrlSource 方式を使用してライセンスベースの独自暗号化 HLS または MP4 動画を再生するには、GetPlayInfo 操作を呼び出して再生 URL を取得できます。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";
// プレーヤー
UrlSource urlSource = new UrlSource();
urlSource.setUri(playURL);// 必須。動画の再生 URL。GetPlayInfo 操作を呼び出して動画 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 暗号化
HLS 暗号化再生 - VOD VidAuth 再生
VOD VidAuth 方式を使用して HLS 暗号化された動画を再生する場合、動画に他の種類の暗号化ストリームや通常のトランスコーディングストリームも含まれている場合は、動画の暗号化タイプを HLSEncryption に設定して 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("Vid info");// 必須。動画 ID。
vidAuth.setPlayAuth("<yourPlayAuth>");// 必須。再生認証情報。ApsaraVideo VOD の GetVideoPlayAuth 操作を呼び出してこの認証情報を生成できます。
vidAuth.setRegion("Region");// このパラメーターは ApsaraVideo Player SDK V5.5.5.0 以降では非推奨です。リージョンを設定する必要はありません。プレーヤーが自動的にリージョンを解析します。以前のバージョンでは、このパラメーターは必須です。ApsaraVideo VOD が有効化されているリージョン。デフォルト値は cn-shanghai です。
// vidAuth.setAuthTimeout(3600);// オプション。再生 URL の有効期間 (秒)。この値は、ApsaraVideo VOD コンソールで設定された URL 署名の有効期間を上書きします。このパラメーターを設定しない場合、デフォルト値 3600 が使用されます。このパラメーターを設定する場合は、再生が完了する前に再生 URL が期限切れにならないように、実際の動画の長さよりも大きい値を設定してください。
aliPlayer.setDataSource(vidAuth);HLS 暗号化再生 - VOD VidSts 再生
VOD VidSts 方式を使用して HLS 暗号化された動画を再生する場合、動画に他の種類の暗号化ストリームや通常のトランスコーディングストリームも含まれている場合は、動画の暗号化タイプを HLSEncryption に設定して HLS 暗号化ストリームをフィルタリングできます。次のコードは一例です。
M3U8 暗号化と書き換えを有効にした後、setMtsHlsUriToken を呼び出してユーザートークンを設定する必要があります。
VidSts vidSts = new VidSts();
VidPlayerConfigGen playerConfig = new VidPlayerConfigGen();
VidPlayerConfigGen.setEncryptType(VidPlayerConfigGen.EncryptType.HLSEncryption);// オプション。暗号化タイプを HLSEncryption に設定すると、HLS 暗号化された動画ストリームのみが返されます。
playerConfig.setMtsHlsUriToken("token");// オプション。このパラメーターを使用して、検証のために MtsHlsUriToken (ユーザートークン) を渡します。
vidSts.setPlayConfig(playerConfig);
vidSts.setVid("Vid info");// 必須。動画 ID。
vidSts.setAccessKeyId("<yourAccessKeyId>");// 必須。一時 STS トークンの AccessKey ID。STS の AssumeRole 操作を呼び出してこの ID を生成できます。
vidSts.setAccessKeySecret("<yourAccessKeySecret>");// 必須。一時 STS トークンの AccessKey Secret。STS の AssumeRole 操作を呼び出してこのシークレットを生成できます。
vidSts.setSecurityToken("<yourSecurityToken>");// 必須。STS トークン。STS の AssumeRole 操作を呼び出してこのトークンを生成できます。
vidSts.setRegion("Region");// 必須。ApsaraVideo VOD が有効化されているリージョン。デフォルト値は cn-shanghai です。
// vidSts.setAuthTimeout(3600);// オプション。再生 URL の有効期間 (秒)。この値は、ApsaraVideo VOD コンソールで設定された URL 署名の有効期間を上書きします。このパラメーターを設定しない場合、デフォルト値 3600 が使用されます。このパラメーターを設定する場合は、再生が完了する前に再生 URL が期限切れにならないように、実際の動画の長さよりも大きい値を設定してください。
aliPlayer.setDataSource(vidSts);HLS 暗号化再生 - UrlSource 再生
ライブまたは VOD の UrlSource 方式を使用して HLS 暗号化された動画を再生する場合、プレーヤー SDK の設定は通常の動画の再生と同じです。追加のパラメーターは必要ありません。
ApsaraVideo VOD の使用を推奨します。GetPlayInfo 操作を呼び出して動画の再生 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>。
UrlSource urlSource = new UrlSource();
urlSource.setUri("Playback URL");// HLS 暗号化されたライブまたは VOD ストリームの再生 URL。
aliPlayer.setDataSource(urlSource);Alibaba Cloud DRM 暗号化
Android では、高セキュリティの動画が正しく再生されるように、SurfaceView を使用して再生することを推奨します。
DRM 暗号化再生 - VOD VidSts 再生
DRM 暗号化の設定方法の詳細については、「VOD の DRM 暗号化を設定」をご参照ください。VOD VidSts 方式を使用して DRM 暗号化された動画を再生する場合、設定は通常の動画の再生と同じです。追加のパラメーターは必要ありません。
VidSts vidSts = new VidSts();
vidSts.setVid("Vid info");// 必須。動画 ID。
vidSts.setAccessKeyId("<yourAccessKeyId>");// 必須。一時 STS トークンの AccessKey ID。STS の AssumeRole 操作を呼び出してこの ID を生成できます。
vidSts.setAccessKeySecret("<yourAccessKeySecret>");// 必須。一時 STS トークンの AccessKey Secret。STS の AssumeRole 操作を呼び出してこのシークレットを生成できます。
vidSts.setSecurityToken("<yourSecurityToken>");// 必須。STS トークン。STS の AssumeRole 操作を呼び出してこのトークンを生成できます。
vidSts.setRegion("Region");// 必須。ApsaraVideo VOD が有効化されているリージョン。デフォルト値は cn-shanghai です。
// vidSts.setAuthTimeout(3600); // オプション。再生 URL の有効期間 (秒)。この値は、ApsaraVideo VOD コンソールで設定された URL 署名の有効期間を上書きします。このパラメーターを設定しない場合、デフォルト値 3600 が使用されます。このパラメーターを設定する場合は、再生が完了する前に再生 URL が期限切れにならないように、実際の動画の長さよりも大きい値を設定してください。
aliPlayer.setDataSource(vidSts);DRM 暗号化再生 - Live LiveStsSource 再生
DRM 暗号化の設定方法の詳細については、「ライブストリーミングの DRM 暗号化を設定」をご参照ください。LiveStsSource 方式を使用して DRM 暗号化された動画を再生するには、URL と STS 認証情報を渡し、動画の暗号化タイプを WideVine_FairPlay に設定する必要があります。次のコードは一例です。
データソースを作成します。
再生ソースとして AVPLiveStsSource を渡す必要があります。
// 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 操作を呼び出してこの ID を生成できます。 liveSts.setAccessKeySecret("<your AccessKey Secret>");// 必須。一時 STS トークンの AccessKey Secret。STS の AssumeRole 操作を呼び出してこのシークレットを生成できます。 liveSts.setSecurityToken("<your STS token>");// 必須。STS トークン。STS の AssumeRole 操作を呼び出してこのトークンを生成できます。 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();STS トークンの無効化をリッスンします。
暗号化されたライブ再生中に、暗号化キーが変更されることがあります。キーが変更されると、STS を使用して最新のキーがリクエストされます。STS トークンが有効かどうかをリッスンする必要があります。無効なトークンは、暗号化されたライブストリームの再生に影響します。
mAliyunVodPlayer.setOnVerifyTimeExpireCallback(new AliPlayer.OnVerifyTimeExpireCallback() { @Override public AliPlayer.Status onVerifySts(StsInfo info) { if(info can be used){ return IPlayer.StsStatus.Valid; } if(a valid STS can be obtained){ Obtain STS();// 非同期または同期にすることができます。 return IPlayer.StsStatus.Pending; } // info が無効で新しい STS を取得できない場合は、画面の乱れを防ぐために再生を停止することを推奨します。 mAliyunVodPlayer.stop(); return IPlayer.StsStatus.Invalid; } @Override public AliPlayer.Status onVerifyAuth(VidAuth auth) { return AliPlayer.Status.Valid; } });説明STS トークンを取得した後、
updateLiveStsInfoメソッドを呼び出して STS 情報を更新する必要があります。トークンの取得に失敗した場合は、再生を停止することを推奨します。STS 情報を更新しない場合、プレーヤーはタイムアウト後も以前の STS トークンを使用してキーを取得し続けます。STS トークンが無効な場合、画面の乱れや再生の失敗が発生する可能性があります。mAliyunVodPlayer.updateStsInfo(stsInfo);
サードパーティ DRM 暗号化
この機能には ApsaraVideo Player SDK V7.8.0 以降が必要です。
サードパーティ DRM (Widevine) 暗号化再生 - VOD UrlSource/Live UrlSource 再生
HLS および DASH の Widevine ソリューションのみがサポートされています。
DRM 暗号化の設定方法の詳細については、「VOD パッケージング」をご参照ください。UrlSource 方式を使用して DRM 暗号化された動画を再生する場合、設定は通常の動画の再生と同じです。ただし、動画のキー情報を取得するために DrmCallback インターフェイスも実装する必要があります。
// DrmCallback.requestKey インターフェイスを実装し、サードパーティ DRM プロバイダーのドキュメントを参照してキーを取得します。
// 次のコードは、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 を独自のトークン 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 をご参照ください。
// 応答のフォーマットと構造はプロバイダーによって大きく異なります。注意深く確認してください。応答が復号に使用できない場合、プレーヤーはエラーを報告します。
return response;
} else {
// 例外を処理します。プレーヤーはエラーを報告します。
return null;
}
}
});iOS
プロシージャ
ApsaraVideo Player for iOS をアプリケーションに迅速に統合して動画を再生できます。手順とサンプルコードは次のとおりです:
iOS 用 ApsaraVideo Player SDK を統合します。
詳細については、「SDK の統合」をご参照ください。
プレーヤーを作成して、動画をプリロードして再生するか、ロードします。
プレーヤーの作成の詳細については、「基本機能」をご参照ください。ステップ 3. データソースの作成では、以下のいずれかの方法でデータソースを作成できます。
Alibaba Cloud 独自暗号化
独自暗号化再生 - VOD VidAuth (HLS + MP4)
VOD VidAuth 方式を使用して独自暗号化された HLS または MP4 動画を再生する場合、動画に他の種類の暗号化ストリームや通常のトランスコーディングストリームも含まれている場合は、動画の暗号化タイプを AliyunVoDEncryption に設定して独自暗号化ストリームをフィルタリングできます。
AVPVidAuthSource *authSource = [[AVPVidAuthSource alloc] init];
authSource.vid = @"Vid info"; // 必須。動画 ID。
authSource.playAuth = @"<yourPlayAuth>"; // 必須。再生認証情報。ApsaraVideo VOD の GetVideoPlayAuth 操作を呼び出してこの認証情報を生成できます。
authSource.region = @"Region"; // このパラメーターは ApsaraVideo Player SDK V5.5.5.0 以降では非推奨です。リージョンを設定する必要はありません。プレーヤーが自動的にリージョンを解析します。以前のバージョンでは、このパラメーターは必須です。ApsaraVideo VOD が有効化されているリージョン。デフォルト値は cn-shanghai です。
// authSource.authTimeout = 3600; // オプション。再生 URL の有効期間 (秒)。この値は、ApsaraVideo VOD コンソールで設定された URL 署名の有効期間を上書きします。このパラメーターを設定しない場合、デフォルト値 3600 が使用されます。このパラメーターを設定する場合は、再生が完了する前に再生 URL が期限切れにならないように、実際の動画の長さよりも大きい値を設定してください。
//VidPlayerConfigGenerator を使用して設定を構築します。
VidPlayerConfigGenerator* config = [[VidPlayerConfigGenerator alloc]init];
[config addVidPlayerConfigByStringValue:@"EncryptType" value:@"AliyunVoDEncryption"]; // オプション。暗号化タイプを AliyunVoDEncryption に設定すると、独自暗号化された動画ストリームのみが返されます。
authSource.playConfig = [config generatePlayerConfig];
[self.player setAuthSource:authSource];独自暗号化再生 - VOD VidSts (HLS + MP4)
VOD VidSts 方式を使用して独自暗号化された HLS または MP4 動画を再生する場合、動画に他の種類の暗号化ストリームや通常のトランスコーディングストリームも含まれている場合は、動画の暗号化タイプを AliyunVoDEncryption に設定して独自暗号化ストリームをフィルタリングできます。
AVPVidStsSource *source = [[AVPVidStsSource alloc] init];
source.region = @"Region"; // 必須。ApsaraVideo VOD が有効化されているリージョン。デフォルト値は cn-shanghai です。
source.vid = @"Vid info"; // 必須。動画 ID。
source.securityToken = @"<yourSecurityToken>"; // 必須。STS トークン。STS の AssumeRole 操作を呼び出してこのトークンを生成できます。
source.accessKeySecret = @"<yourAccessKeySecret>"; // 必須。一時 STS トークンの AccessKey Secret。STS の AssumeRole 操作を呼び出してこのシークレットを生成できます。
source.accessKeyId = @"<yourAccessKeyId>"; // 必須。一時 STS トークンの AccessKey ID。STS の AssumeRole 操作を呼び出してこの ID を生成できます。
// source.authTimeout = 3600; // オプション。再生 URL の有効期間 (秒)。この値は、ApsaraVideo VOD コンソールで設定された URL 署名の有効期間を上書きします。このパラメーターを設定しない場合、デフォルト値 3600 が使用されます。このパラメーターを設定する場合は、再生が完了する前に再生 URL が期限切れにならないように、実際の動画の長さよりも大きい値を設定してください。
//VidPlayerConfigGenerator を使用して設定を構築します。
VidPlayerConfigGenerator* config = [[VidPlayerConfigGenerator alloc]init];
[config addVidPlayerConfigByStringValue:@"EncryptType" value:@"AliyunVoDEncryption"]; // オプション。暗号化タイプを AliyunVoDEncryption に設定すると、独自暗号化された動画ストリームのみが返されます。
source.playConfig = [config generatePlayerConfig];
//再生ソースを設定します。
[self.player setStsSource:source];独自暗号化再生 - Live LiveStsSource (HLS + FLV)
LiveStsSource 方式を使用して独自暗号化された HLS または FLV 動画を再生するには、URL と STS 認証情報を渡し、動画の暗号化タイプを ENCRYPTION_TYPE_ALIVODENCRYPTION に設定する必要があります。次のコードは一例です。
データソースを作成します。
再生ソースとして AVPLiveStsSource を渡す必要があります。
// LiveSts オブジェクトを作成し、encryptionType を ENCRYPTION_TYPE_ALIVODENCRYPTION に設定します。 AVPLiveStsSource *liveStsSource = [[AVPLiveStsSource alloc] initWithUrl:@"暗号化されたライブ URL" accessKeyId:@"一時的な AK ID" accessKeySecret:@"一時的な AK シークレット" securityToken:@"セキュリティトークン" region:@"リージョン値" domain:@"URL ストリーミングドメイン" app:@"ストリーミングアプリケーション名" stream:@"ストリーミングストリーム名" encryptionType:ENCRYPTION_TYPE_ALIVODENCRYPTION];// 必須。暗号化タイプを ENCRYPTION_TYPE_ALIVODENCRYPTION に設定します。 // 再生ソースを設定します。 [self.aliPlayer setLiveStsSource:liveStsSource]; ...... // 再生の準備をします。 [self.aliPlayer prepare];STS トークンの無効化をリッスンします。
暗号化されたライブ再生中に、暗号化キーが変更されることがあります。キーが変更されると、STS を使用して最新のキーがリクエストされます。STS トークンが有効かどうかをリッスンする必要があります。無効なトークンは、暗号化されたライブストリームの再生に影響します。
__weak typeof(self) weakSelf = self; [self.aliPlayer setVerifyStsCallback:^AVPStsStatus(AVPStsInfo info) { if (info can be used) { return Valid; } if(a valid STS can be obtained){ Obtain STS();// 非同期または同期にすることができます。 return Pending; } [weakSelf.aliPlayer stop]; return Invalid; }];説明STS トークンを取得した後、
updateLiveStsInfoメソッドを呼び出して STS 情報を更新する必要があります。トークンの取得に失敗した場合は、再生を停止することを推奨します。STS 情報を更新しない場合、プレーヤーはタイムアウト後も以前の STS トークンを使用してキーを取得し続けます。STS トークンが無効な場合、画面の乱れや再生の失敗が発生する可能性があります。[self.aliPlayer updateLiveStsInfo:self.liveStsSource.accessKeyId accKey:self.liveStsSource.accessKeySecret token:self.liveStsSource.securityToken region:self.liveStsSource.region];
Alibaba Cloud ライセンスベースの独自暗号化
ライセンスベースの独自暗号化再生 - VOD UrlSource 再生 (HLS + MP4)
ApsaraVideo Player SDK for iOS V6.8.0 以降は、VOD UrlSource 方式を使用したライセンスベースの独自暗号化 MP4 動画の再生をサポートしています。V6.17.0 以降は、ライセンスベースの独自暗号化 HLS 動画 (シングルおよびマルチビットレート) をサポートしています。
VOD UrlSource 方式を使用してライセンスベースの独自暗号化 HLS または MP4 動画を再生するには、GetPlayInfo 操作を呼び出して再生 URL を取得できます。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
NSString *playURL = @"https://example.aliyundoc.com/test.mp4?etavirp_nuyila=1";
//プレーヤー
AliPlayer *player = [[AliPlayer alloc] init];
AVPUrlSource *urlSource = [[AVPUrlSource alloc] urlWithString:playURL]; // 必須。動画の再生 URL。GetPlayInfo 操作を呼び出して動画 URL を取得できます。取得した URL の末尾に etavirp_nuyila=1 を追加 (MP4 のみ) してからプレーヤーに渡す必要があります。例: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 暗号化
HLS 暗号化再生 - VOD VidAuth 再生
VOD VidAuth 方式を使用して HLS 暗号化された動画を再生する場合、動画に他の種類の暗号化ストリームや通常のトランスコーディングストリームも含まれている場合は、動画の暗号化タイプを HLSEncryption に設定して HLS 暗号化ストリームをフィルタリングできます。次のコードは一例です。
M3U8 暗号化と書き換えを有効にした後、setHlsUriToken を呼び出してユーザートークンを設定する必要があります。
AVPVidAuthSource *authSource = [[AVPVidAuthSource alloc] init];
authSource.vid = @"Vid info"; // 必須。動画 ID。
authSource.playAuth = @"<yourPlayAuth>"; // 必須。再生認証情報。ApsaraVideo VOD の GetVideoPlayAuth 操作を呼び出してこの認証情報を生成できます。
authSource.region = @"Region"; // このパラメーターは ApsaraVideo Player SDK V5.5.5.0 以降では非推奨です。リージョンを設定する必要はありません。プレーヤーが自動的にリージョンを解析します。以前のバージョンでは、このパラメーターは必須です。ApsaraVideo VOD が有効化されているリージョン。デフォルト値は cn-shanghai です。
// authSource.authTimeout = 3600; // オプション。再生 URL の有効期間 (秒)。この値は、ApsaraVideo VOD コンソールで設定された URL 署名の有効期間を上書きします。このパラメーターを設定しない場合、デフォルト値 3600 が使用されます。このパラメーターを設定する場合は、再生が完了する前に再生 URL が期限切れにならないように、実際の動画の長さよりも大きい値を設定してください。
//VidPlayerConfigGenerator を使用して設定を構築します。
VidPlayerConfigGenerator* config = [[VidPlayerConfigGenerator alloc]init];
[config addVidPlayerConfigByStringValue:@"EncryptType" value:@"HLSEncryption"]; // オプション。暗号化タイプを HLSEncryption に設定すると、HLS 暗号化された動画ストリームのみが返されます。
[config setHlsUriToken: @"token"]; // オプション。このパラメーターを使用して、検証のために MtsHlsUriToken (ユーザートークン) を渡します。
source.playConfig = [config generatePlayerConfig];
//再生ソースを設定します。
[self.player setAuthSource:authSource];HLS 暗号化再生 - VOD VidSts 再生
VOD VidSts 方式を使用して HLS 暗号化された動画を再生する場合、動画に他の種類の暗号化ストリームや通常のトランスコーディングストリームも含まれている場合は、動画の暗号化タイプを HLSEncryption に設定して HLS 暗号化ストリームをフィルタリングできます。次のコードは一例です。
M3U8 暗号化と書き換えを有効にした後、setHlsUriToken を呼び出してユーザートークンを設定する必要があります。
AVPVidStsSource *source = [[AVPVidStsSource alloc] init];
source.vid = @"Vid info"; // 必須。動画 ID。
source.region = @"Region"; // 必須。ApsaraVideo VOD が有効化されているリージョン。デフォルト値は cn-shanghai です。
source.securityToken = @"<yourSecurityToken>"; // 必須。STS トークン。STS の AssumeRole 操作を呼び出してこのトークンを生成できます。
source.accessKeySecret = @"<yourAccessKeySecret>"; // 必須。一時 STS トークンの AccessKey Secret。STS の AssumeRole 操作を呼び出してこのシークレットを生成できます。
source.accessKeyId = @"<yourAccessKeyId>"; // 必須。一時 STS トークンの AccessKey ID。STS の AssumeRole 操作を呼び出してこの ID を生成できます。
// source.authTimeout = 3600; // オプション。再生 URL の有効期間 (秒)。この値は、ApsaraVideo VOD コンソールで設定された URL 署名の有効期間を上書きします。このパラメーターを設定しない場合、デフォルト値 3600 が使用されます。このパラメーターを設定する場合は、再生が完了する前に再生 URL が期限切れにならないように、実際の動画の長さよりも大きい値を設定してください。
//VidPlayerConfigGenerator を使用して設定を構築します。
VidPlayerConfigGenerator* config = [[VidPlayerConfigGenerator alloc]init];
[config addVidPlayerConfigByStringValue:@"EncryptType" value:@"HLSEncryption"]; // オプション。暗号化タイプを HLSEncryption に設定すると、HLS 暗号化された動画ストリームのみが返されます。
[config setHlsUriToken: @"token"]; // オプション。このパラメーターを使用して、検証のために MtsHlsUriToken (ユーザートークン) を渡します。
source.playConfig = [config generatePlayerConfig];
// 再生ソースを設定します。
[self.player setStsSource:source];HLS 暗号化再生 - UrlSource 再生
ライブまたは VOD の UrlSource 方式を使用して HLS 暗号化された動画を再生する場合、プレーヤー SDK の設定は通常の動画の再生と同じです。追加のパラメーターは必要ありません。
ApsaraVideo VOD の使用を推奨します。GetPlayInfo 操作を呼び出して動画の再生 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 暗号化されたライブまたは VOD ストリームの再生 URL。
[self.player setUrlSource:urlSource];Alibaba Cloud DRM 暗号化
iOS では、[self.player prepare] を呼び出す前に、AliPlayerGlobalSettings の setFairPlayCertID メソッドをグローバルに一度呼び出して証明書 ID を設定する必要があります。証明書 ID は、ApsaraVideo VOD コンソールの [設定管理] > [メディア処理] > [DRM 証明書管理] で取得できます。
[AliPlayerGlobalSettings setFairPlayCertID:@"コンソールから取得した証明書 ID"];DRM 暗号化再生 - VOD VidSts 再生
DRM 暗号化の設定方法の詳細については、「VOD の DRM 暗号化を設定」をご参照ください。VOD VidSts 方式を使用して DRM 暗号化された動画を再生する場合、設定は通常の動画の再生と同じです。追加のパラメーターは必要ありません。
AVPVidStsSource *source = [[AVPVidStsSource alloc] init];
source.region = @"Region"; // 必須。ApsaraVideo VOD が有効化されているリージョン。デフォルト値は cn-shanghai です。
source.vid = @"Vid info"; // 必須。動画 ID。
source.securityToken = @"<yourSecurityToken>"; // 必須。STS トークン。STS の AssumeRole 操作を呼び出してこのトークンを生成できます。
source.accessKeySecret = @"<yourAccessKeySecret>"; // 必須。一時 STS トークンの AccessKey Secret。STS の AssumeRole 操作を呼び出してこのシークレットを生成できます。
source.accessKeyId = @"<yourAccessKeyId>"; // 必須。一時 STS トークンの AccessKey ID。STS の AssumeRole 操作を呼び出してこの ID を生成できます。
// source.authTimeout = 3600; // オプション。再生 URL の有効期間 (秒)。この値は、ApsaraVideo VOD コンソールで設定された URL 署名の有効期間を上書きします。このパラメーターを設定しない場合、デフォルト値 3600 が使用されます。このパラメーターを設定する場合は、再生が完了する前に再生 URL が期限切れにならないように、実際の動画の長さよりも大きい値を設定してください。
//再生ソースを設定します。
[self.player setStsSource:source]DRM 暗号化再生 - Live LiveStsSource 再生
DRM 暗号化の設定方法の詳細については、「ライブストリーミングの DRM 暗号化を設定」をご参照ください。LiveStsSource 方式を使用して DRM 暗号化された動画を再生するには、URL と STS 認証情報を渡し、動画の暗号化タイプを ENCRYPTION_TYPE_FAIRPLAY に設定する必要があります。次のコードは一例です。
データソースを作成します。
再生ソースとして AVPLiveStsSource を渡す必要があります。
// LiveSts オブジェクトを作成し、encryptionType を ENCRYPTION_TYPE_FAIRPLAY に設定します。 AVPLiveStsSource *liveStsSource = [[AVPLiveStsSource alloc] initWithUrl:@"暗号化されたライブ URL" accessKeyId:@"一時的な AK ID" accessKeySecret:@"一時的な AK シークレット" securityToken:@"セキュリティトークン" region:@"リージョン値" domain:@"URL ストリーミングドメイン" app:@"ストリーミングアプリケーション名" stream:@"ストリーミングストリーム名" encryptionType:ENCRYPTION_TYPE_FAIRPLAY];// 必須。暗号化タイプを ENCRYPTION_TYPE_FAIRPLAY に設定します。 // 再生ソースを設定します。 [self.aliPlayer setLiveStsSource:liveStsSource]; ...... // 再生の準備をします。 [self.aliPlayer prepare];STS トークンの無効化をリッスンします。
暗号化されたライブ再生中に、暗号化キーが変更されることがあります。キーが変更されると、STS を使用して最新のキーがリクエストされます。STS トークンが有効かどうかをリッスンする必要があります。無効なトークンは、暗号化されたライブストリームの再生に影響します。
__weak typeof(self) weakSelf = self; [self.aliPlayer setVerifyStsCallback:^AVPStsStatus(AVPStsInfo info) { if (info can be used){ return Valid; } if(a valid STS can be obtained){ Obtain STS();// 非同期または同期にすることができます。 return Pending; } [weakSelf.aliPlayer stop]; return Invalid; }];説明STS トークンを取得した後、
updateLiveStsInfoメソッドを呼び出して STS 情報を更新する必要があります。トークンの取得に失敗した場合は、再生を停止することを推奨します。STS 情報を更新しない場合、プレーヤーはタイムアウト後も以前の STS トークンを使用してキーを取得し続けます。STS トークンが無効な場合、画面の乱れや再生の失敗が発生する可能性があります。[self.aliPlayer updateLiveStsInfo:self.liveStsSource.accessKeyId accKey:self.liveStsSource.accessKeySecret token:self.liveStsSource.securityToken region:self.liveStsSource.region];
サードパーティ DRM 暗号化
この機能には ApsaraVideo Player SDK V7.8.0 以降が必要です。
FairPlay で暗号化された動画を再生するには、AppleAVPlayer を使用する必要があります。再生が開始される前に、
[self.player setPreferPlayerName:@"AppleAVPlayer"]を呼び出してカーネルを切り替えることができます。DRM で暗号化されていない動画を再生するには、[self.player setPreferPlayerName:@""]を呼び出してデフォルトのカーネルに戻すことができます。
サードパーティ DRM (Fairplay) 暗号化再生 - VOD UrlSource/Live UrlSource 再生
HLS の FairPlay ソリューションのみがサポートされています。
DRM 暗号化の設定方法の詳細については、「ライブパッケージング」をご参照ください。UrlSource 方式を使用して DRM 暗号化された動画を再生する場合、設定は通常の動画の再生と同じです。ただし、FairPlay 証明書と動画キーを取得するために AVPDrmDelegate インターフェイスも実装する必要があります。
@interface SimplePlayerViewController()<AVPDrmDelegate>
@end
- (void)viewDidLoad {
self.player = [[AliPlayer alloc] init];
self.player.playerView = self.avpPlayerView.playerView;
self.player.drmDelegate = self;
if(the current URL is a third-party DRM video){
[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 プロバイダーの要件に従って、設定された FairPlay 証明書の HTTP GET リクエストを送信します。
// このスレッドを長時間占有しないようにします。
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 [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
}Flutter
DRM 暗号化は Flutter ではサポートされていません。
プロシージャ
ApsaraVideo Player for Flutter をアプリケーションに迅速に統合して動画を再生できます。手順とサンプルコードは次のとおりです:
Flutter 用 ApsaraVideo Player SDK を統合します。
詳細については、「SDK の統合」をご参照ください。
プレーヤーを作成して動画を再生します。
プレーヤーの作成方法の詳細については、「基本機能」をご参照ください。「ステップ 3. 再生ソースの作成」では、必要に応じて次のいずれかの方法でソースを作成できます。
Alibaba Cloud 独自暗号化
独自暗号化再生 - VOD VidAuth (HLS + MP4)
VOD VidAuth 方式を使用して独自暗号化された HLS または MP4 動画を再生する場合、動画に他の種類の暗号化ストリームや通常のトランスコーディングストリームも含まれている場合は、動画の暗号化タイプを AliyunVoDEncryption に設定して独自暗号化ストリームをフィルタリングできます。
FlutterAliplayer.setEncryptType(EncryptType.AliyunVoDEncryption);// オプション。暗号化タイプを AliyunVoDEncryption に設定すると、独自暗号化された動画ストリームのみが返されます。
FlutterAliplayer.generatePlayerConfig().then((value) {
this.fAliplayer.setVidAuth(
vid: "Vid info",
region: "Region",// 必須。ApsaraVideo VOD が有効化されているリージョン。デフォルト値は cn-shanghai です。
playAuth: "<yourPlayAuth>",// 必須。再生認証情報。ApsaraVideo VOD の GetVideoPlayAuth 操作を呼び出してこの認証情報を生成できます。
playConfig: value);
});独自暗号化再生 - VOD VidSts (HLS + MP4)
VOD VidSts 方式を使用して独自暗号化された HLS または MP4 動画を再生する場合、動画に他の種類の暗号化ストリームや通常のトランスコーディングストリームも含まれている場合は、動画の暗号化タイプを AliyunVoDEncryption に設定して独自暗号化ストリームをフィルタリングできます。
FlutterAliplayer.setEncryptType(EncryptType.AliyunVoDEncryption);// オプション。暗号化タイプを AliyunVoDEncryption に設定すると、独自暗号化された動画ストリームのみが返されます。
FlutterAliplayer.generatePlayerConfig().then((value) {
this.fAliplayer.setVidSts(
vid: "Vid info",
region: "Region",
accessKeyId: "<yourAccessKeyId>",
accessKeySecret: "<yourAccessKeySecret>",
securityToken: "<yourSecurityToken>",
playConfig: value);
});Alibaba Cloud ライセンスベースの独自暗号化
ライセンスベースの独自暗号化再生 - VOD UrlSource 再生 (HLS + MP4)
ApsaraVideo Player SDK for Flutter V6.8.0 以降は、VOD UrlSource 方式を使用したライセンスベースの独自暗号化 MP4 動画の再生をサポートしています。V6.17.0 以降は、ライセンスベースの独自暗号化 HLS 動画 (シングルおよびマルチビットレート) をサポートしています。
VOD UrlSource 方式を使用してライセンスベースの独自暗号化 HLS または MP4 動画を再生するには、GetPlayInfo 操作を呼び出して再生 URL を取得できます。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 暗号化
HLS 暗号化再生 - VOD VidAuth 再生
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: "Vid info",
region: "Region",// 必須。ApsaraVideo VOD が有効化されているリージョン。デフォルト値は cn-shanghai です。
playAuth: "<yourPlayAuth>",// 必須。再生認証情報。ApsaraVideo VOD の GetVideoPlayAuth 操作を呼び出してこの認証情報を生成できます。
playConfig: value);
});HLS 暗号化再生 - VOD VidSts 再生
VOD VidSts 方式を使用して HLS 暗号化された動画を再生する場合、動画に他の種類の暗号化ストリームや通常のトランスコーディングストリームも含まれている場合は、動画の暗号化タイプを HLSEncryption に設定して HLS 暗号化ストリームをフィルタリングできます。次のコードは一例です。
M3U8 暗号化と書き換えを有効にした後、setHlsUriToken を呼び出してユーザートークンを設定する必要があります。
FlutterAliplayer.setEncryptType(EncryptType.HLSEncryption);// オプション。暗号化タイプを AliyunVoDEncryption に設定すると、独自暗号化された動画ストリームのみが返されます。
FlutterAliplayer.setHlsUriToken("token");// オプション。このパラメーターを使用して、検証のために MtsHlsUriToken (ユーザートークン) を渡します。
FlutterAliplayer.generatePlayerConfig().then((value) {
this.fAliplayer.setVidSts(
vid: "Vid info",
region: "Region",
accessKeyId: "<yourAccessKeyId>",
accessKeySecret: "<yourAccessKeySecret>",
securityToken: "<yourSecurityToken>",
playConfig: value);
});HLS 暗号化再生 - UrlSource 再生
ライブまたは VOD の UrlSource 方式を使用して HLS 暗号化された動画を再生する場合、プレーヤー SDK の設定は通常の動画の再生と同じです。追加のパラメーターは必要ありません。
ApsaraVideo VOD の使用を推奨します。GetPlayInfo 操作を呼び出して動画の再生 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>。
//プレーヤーインスタンスを作成します。
FlutterAliplayer fAliplayer = FlutterAliPlayerFactory.createAliPlayer();
//HLS 暗号化されたライブまたは VOD ストリームの再生 URL。
fAliplayer.setUrl("Playback URL");
fAliplayer.prepare();よくある質問
動画暗号化に関する一般的な問題と解決策の詳細については、「動画暗号化に関するよくある質問」をご参照ください。