ApsaraVideo VOD と ApsaraVideo Live は、複数のビデオ暗号化方式をサポートしています。このトピックでは、ApsaraVideo Player SDK を使用して、Alibaba Cloud 専用の暗号化、HLS 標準暗号化、および DRM 暗号化で暗号化されたビデオを再生する方法について説明します。
ビデオ暗号化の概要
ApsaraVideo VOD は、アクセスコントロール、URL 署名、リモート認証、ビデオ暗号化、セキュアダウンロードなどを含む包括的なコンテンツセキュリティメカニズムを提供します。
概要では、利用可能なすべてのセキュリティポリシーについて説明しています。次の表に、3 つのビデオ暗号化方式の比較を示します。
セキュリティポリシー | 方式 | 利点 | セキュリティレベル | デプロイの複雑さ |
ビデオ暗号化 | Alibaba Cloud 専用の暗号化 | ApsaraVideo VOD は、独自の暗号化アルゴリズムを使用して、クラウドとデバイスを統合したビデオ暗号化ソリューションを提供します。これにより、伝送リンクのセキュリティが確保されます。 | 高 | 比較的低い。簡単な構成と ApsaraVideo Player SDK の統合のみが必要です。 |
HTTP ライブストリーミング (HLS) 暗号化 | HLS 暗号化は AES-128 を使用してビデオコンテンツを暗号化し、すべての HLS 互換プレーヤーをサポートします。ただし、キーが盗難される可能性があります。 | 高 | 高い。キー管理サービスとトークン発行サービスをセットアップする必要があります。さらに、伝送リンクのセキュリティを確保する必要があります。 | |
商用 DRM | Apple FairPlay や Google Widevine などの商用 DRM システムをネイティブにサポートします。この方式は高レベルのセキュリティを提供し、ほとんどの著作権者の要件を満たします。 | 高 | 高い。ライセンス呼び出しの数に基づいて課金されます (サードパーティ DRM の場合は、該当する課金基準をご参照ください)。ApsaraVideo Player SDK を統合するだけで済みます。 |
ApsaraVideo Player SDK の互換性
クライアント | 再生方式 | 専用の暗号化 (HLS) | ライセンスベースの暗号化 (HLS) | ライセンスベースの暗号化 (MP4) | 専用の暗号化 (ライブ FLV) | HLS 暗号化 | Alibaba Cloud DRM | サードパーティ DRM |
Web | UrlSource ベースの再生 | ❌ | ❌ | ❌ | ❌ | ✔️ | ❌ | ✔️ |
VidAuth ベースの再生 | ✔️ | ❌ | ❌ | ❌ | ✔️ | ❌ | ❌ | |
VidSts ベースの再生 | ❌ | ❌ | ❌ | ❌ | ✔️ | ✔️ | ❌ | |
UrlSource ベースのライブストリーミング | ❌ | ❌ | ❌ | ❌ | ✔️ | ❌ | ✔️ | |
LiveStsSource ベースのライブストリーミング | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | |
ネイティブ (iOS/Android/Flutter/Harmony) ネイティブ (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 ビデオ暗号化 (プライベート暗号化)。
ApsaraVideo 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 を例として使用します。Alibaba Cloud Player はトークン渡しをサポートしています。CDN は HLS マニフェストファイルの復号 URI を動的に調整し、アプリケーションが検証できるユーザートークンを追加します。
Alibaba Cloud DRM 暗号化
ApsaraVideo VOD は、Widevine および FairPlay スキームによる業界標準のデジタル著作権管理 (DRM) 暗号化をサポートし、著作権で保護されたビデオを管理するためのワンストップソリューションを提供します。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 暗号化、ApsaraVideo Player SDK での再生まで、エンドツーエンドのワークフローを可能にします。
DRM 暗号化はトランスコード中に適用されます (メディアトランスコード料金が適用されます)。クライアントが再生ライセンスを要求すると、DRM ライセンス料金が適用されます。DRM の課金。
DRM 暗号化の設定
この機能は、ApsaraVideo for Media Processing コンソールで有効にします。ライブパッケージング および VOD パッケージング。
Web クライアント
ApsaraVideo Player SDK for Web を使用する前に、Alibaba Cloud 専用の暗号化のブラウザ互換性を確認してください。
H5 モードは、デスクトップとモバイルの両方のブラウザをサポートしています。機能サポート。
セキュリティ上の理由から、Alibaba Cloud 専用の暗号化では、実際に暗号化されたビデオでのデバッグは許可されていません。
操作手順
Web プレーヤーを Web ページに埋め込みます。
クイックスタートガイドに従って、ApsaraVideo Player SDK for Web をページにインポートします。
暗号化方式を選択し、再生を開始します。
次のコードは、プレーヤーを埋め込む方法を示しています。
Alibaba Cloud 専用の暗号化
VOD (VidAuth)
ApsaraVideo VOD の VidAuth 方式を使用して Alibaba Cloud 専用の暗号化で暗号化されたビデオを再生するには、専用の暗号化を有効にするために 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>ライブ (LiveStsSource)
LiveStsSource 方式で専用の暗号化を使用するライブストリームを再生するには、ストリーム 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>ライブ専用暗号化再生テストケース</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>',// 必須。専用の暗号化を使用した HLS ライブストリームの再生 URL。
accessKeyId: '<your AccessKey ID>',// 必須。STS 一時認証情報ペアの AccessKey ID。STS AssumeRole オペレーションを呼び出して生成します。
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。
useHls2: false,
},function(player){
console.log('プレーヤーが作成されました。')
});
</script>
</body>
</html>
iOS バージョン 17.1 未満のブラウザで暗号化されたオンデマンドビデオを再生するには、追加のプレーヤープラグインスクリプトをデプロイする必要があります。次の手順に従ってください:
iOS バージョン 17.1 未満では、専用の暗号化には Service Worker テクノロジーに基づくプラグインが必要です。ブラウザのセキュリティポリシーにより、Service Worker は同一オリジンのスクリプトに制限されるため、Web サイトと同じドメインにプラグインをデプロイする必要があります。
スクリプトをダウンロードします: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 を指定し、アクセス可能であることを確認してください。 })
注意:プレーヤーのバージョンがプラグインのバージョンと完全に一致していることを確認してください。
Web ページがカスタムパッケージ化された iOS アプリケーション (uni-app など) 内で実行される場合は、アプリの
Info.plistファイルのWKAppBoundDomainsにドメインを追加して、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 オペレーションを呼び出すことで ID を取得できます。例:1e067a2831b641db90d570b6480f****。
accessKeyId: '<your AccessKey ID>', // 必須。STS 一時認証情報ペアの AccessKey ID。STS セキュリティトークンを生成する際に返されます。
securityToken: '<your STS token>', // 必須。STS セキュリティトークン。STS AssumeRole オペレーションを呼び出して生成します。
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 標準暗号化を使用するライブまたはオンデマンドストリームを再生する場合、追加のパラメーターは必要ありません。構成は標準ビデオの再生と同じです。
let player = new Aliplayer({
id:'J_prismPlayer',
source:'<your play URL>', // 再生 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 オペレーションを呼び出して生成します。
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>ライブ (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 オペレーションを呼び出して生成します。
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
操作手順
Alibaba Cloud Player SDK for Android をアプリケーションに統合します。以下のセクションでは、手順とサンプルコードを提供します。
Alibaba Cloud Player SDK for Android を統合します。
プレーヤーを作成してビデオを再生します。
基本機能に従ってください。ステップ 3. データソースの作成では、要件に応じて以下のいずれかの方法を選択してください。
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"
}
}]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 オペレーションを呼び出して生成されます。
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 オペレーションを呼び出します。
vidSts.setAccessKeySecret("<yourAccessKeySecret>");// 必須。一時的な STS 認証情報の AccessKey Secret。これを取得するには、STS AssumeRole オペレーションを呼び出します。
vidSts.setSecurityToken("<yourSecurityToken>");// 必須。セキュリティトークン。これを取得するには、STS AssumeRole オペレーションを呼び出します。
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 に設定する必要があります。次のコードは例を示しています:
データソースを作成します。
再生ソースとして
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 オペレーションを呼び出します。 liveSts.setAccessKeySecret("<your AccessKey Secret>");// 必須。一時的な STS 認証情報の AccessKey Secret。これを取得するには、STS AssumeRole オペレーションを呼び出します。 liveSts.setSecurityToken("<your STS token>");// 必須。セキュリティトークン。これを取得するには、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 valid STS credential can be obtained){ getSTS(); // これは非同期または同期にすることができます。 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 認証情報が無効になると、再生の失敗やビデオ出力の破損を引き起こす可能性があります。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 オペレーションを呼び出して 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 オペレーションを呼び出して生成されます。
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();
VidPlayerConfigGen.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 オペレーションを呼び出します。
vidSts.setAccessKeySecret("<yourAccessKeySecret>");// 必須。一時的な STS 認証情報の AccessKey Secret。これを取得するには、STS AssumeRole オペレーションを呼び出します。
vidSts.setSecurityToken("<yourSecurityToken>");// 必須。セキュリティトークン。これを取得するには、STS AssumeRole オペレーションを呼び出します。
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 オペレーションを呼び出します。
vidSts.setAccessKeySecret("<yourAccessKeySecret>");// 必須。一時的な STS 認証情報の AccessKey Secret。これを取得するには、STS AssumeRole オペレーションを呼び出します。
vidSts.setSecurityToken("<yourSecurityToken>");// 必須。セキュリティトークン。これを取得するには、STS AssumeRole オペレーションを呼び出します。
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 に設定する必要があります。次のコードは例を示しています:
データソースを作成します。
再生ソースとして
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 オペレーションを呼び出します。 liveSts.setAccessKeySecret("<your AccessKey Secret>");// 必須。一時的な STS 認証情報の AccessKey Secret。これを取得するには、STS AssumeRole オペレーションを呼び出します。 liveSts.setSecurityToken("<your STS token>");// 必須。セキュリティトークン。これを取得するには、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 is valid){ return IPlayer.StsStatus.Valid; } if(a valid STS credential can be obtained){ getSTS(); // これは非同期または同期にすることができます。 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 認証情報が無効になると、再生の失敗やビデオ出力の破損を引き起こす可能性があります。mAliyunVodPlayer.updateStsInfo(stsInfo);
サードパーティ DRM 暗号化
この機能にはプレーヤー SDK V7.8.0 以降が必要です。
UrlSource
この機能は、HLS および DASH プロトコルの Widevine DRM スキームのみをサポートします。
まず、VOD パッケージングを参照して DRM 暗号化を設定します。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 を独自のものに置き換えます。
"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 をアプリケーションに統合します。手順とサンプルコードは次のとおりです:
Player SDK for iOS を統合します。
プレーヤーを作成してビデオをロードし、再生します。
基本機能に従ってください。ステップ 3. データソースの作成では、要件に応じて以下のいずれかの方法を使用してください。
Alibaba Cloud プライベート暗号化
VOD 用 VidAuth
ApsaraVideo VOD の VidAuth メソッドを使用してプライベート暗号化された HLS または MP4 ビデオを再生する場合、ビデオに暗号化されていないストリームまたは標準のトランスコード済みストリームも含まれている場合は、暗号化タイプを AliyunVoDEncryption に設定して、プライベート暗号化されたストリームのみを再生します。
AVPVidAuthSource *authSource = [[AVPVidAuthSource alloc] init];
authSource.vid = @"ご利用のビデオ ID"; // 必須。ビデオ ID。
authSource.playAuth = @"<yourPlayAuth>"; // 必須。再生認証情報。この認証情報は、ApsaraVideo VOD の GetVideoPlayAuth オペレーションを呼び出すことで取得できます。
authSource.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 を使用して設定をビルドします。
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 = @"ご利用のリージョン"; // 必須。ApsaraVideo VOD がアクティブ化されているリージョン。デフォルト値:cn-shanghai。
source.vid = @"ご利用のビデオ ID"; // 必須。ビデオ ID。
source.securityToken = @"<yourSecurityToken>"; // 必須。セキュリティトークン。このトークンは、STS の AssumeRole オペレーションを呼び出すことで取得できます。
source.accessKeySecret = @"<yourAccessKeySecret>"; // 必須。一時的な STS 認証情報の AccessKey Secret。この認証情報は、STS の AssumeRole オペレーションを呼び出すことで取得できます。
source.accessKeyId = @"<yourAccessKeyId>"; // 必須。一時的な STS 認証情報の AccessKey ID。この認証情報は、STS の AssumeRole オペレーションを呼び出すことで取得できます。
// 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];ライブ用 LiveStsSource
LiveStsSource メソッドを使用して、HLS または FLV 形式のプライベート暗号化されたライブストリームを再生するには、ストリーム URL と STS 認証情報を提供し、ビデオ暗号化タイプを ENCRYPTION_TYPE_ALIVODENCRYPTION に設定する必要があります。次のコードは例を示しています:
データソースを作成します。
再生ソースとして
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];STS 認証情報の無効化をリッスンします。
暗号化されたライブ再生中に、暗号化キーがローテーションされることがあります。これが発生すると、プレーヤーは STS 認証情報を使用して新しいキーを要求します。無効な認証情報は再生を中断させるため、認証情報の有効性を監視する必要があります。
__weak typeof(self) weakSelf = self; [self.aliPlayer setVerifyStsCallback:^AVPStsStatus(AVPStsInfo info) { if (info is valid) { return Valid; } if (a valid STS credential can be obtained) { 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 オペレーションを呼び出してビデオの再生 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 オペレーションを呼び出して 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 = @"ご利用のビデオ ID"; // 必須。ビデオ ID。
authSource.playAuth = @"<yourPlayAuth>"; // 必須。再生認証情報。この認証情報は、ApsaraVideo VOD の GetVideoPlayAuth オペレーションを呼び出すことで取得できます。
authSource.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 を使用して設定をビルドします。
VidPlayerConfigGenerator* config = [[VidPlayerConfigGenerator alloc]init];
[config addVidPlayerConfigByStringValue:@"EncryptType" value:@"HLSEncryption"]; // オプション。このパラメーターを HLSEncryption に設定すると、HLS 標準暗号化で暗号化されたビデオストリームのみが返されます。
[config setHlsUriToken: @"token"]; // オプション。このパラメーターを使用して、検証のために MtsHlsUriToken (ユーザートークン) を渡します。
source.playConfig = [config generatePlayerConfig];
// 再生ソースを設定します。
[self.player setAuthSource:authSource];VOD 用 VidSts
ApsaraVideo VOD の VidSts メソッドで HLS 標準暗号化を使用して暗号化されたビデオを再生する場合、ビデオに暗号化されていないストリームまたは標準のトランスコード済みストリームも含まれている場合は、暗号化タイプを HLSEncryption に設定して、HLS 標準暗号化のストリームのみを再生します。次のコードは例を示しています:
M3U8 標準暗号化の書き換えを有効にした場合は、setHlsUriToken を呼び出してユーザートークンを設定する必要があります。
AVPVidStsSource *source = [[AVPVidStsSource alloc] init];
source.vid = @"ご利用のビデオ ID"; // 必須。ビデオ ID。
source.region = @"ご利用のリージョン"; // 必須。ApsaraVideo VOD がアクティブ化されているリージョン。デフォルト値:cn-shanghai。
source.securityToken = @"<yourSecurityToken>"; // 必須。セキュリティトークン。このトークンは、STS の AssumeRole オペレーションを呼び出すことで取得できます。
source.accessKeySecret = @"<yourAccessKeySecret>"; // 必須。一時的な STS 認証情報の AccessKey Secret。この認証情報は、STS の AssumeRole オペレーションを呼び出すことで取得できます。
source.accessKeyId = @"<yourAccessKeyId>"; // 必須。一時的な STS 認証情報の AccessKey ID。この認証情報は、STS の AssumeRole オペレーションを呼び出すことで取得できます。
// 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];UrlSource
UrlSource メソッドを使用して HLS 標準暗号化のストリームを再生する場合、プレーヤーの設定は標準ビデオの再生と同じです。追加のパラメーターは必要ありません。
ApsaraVideo VOD を使用することを推奨します。GetPlayInfo オペレーションを呼び出してビデオの再生 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] の前に、AliPlayerGlobalSettings の setFairPlayCertID メソッドをグローバルに一度呼び出して証明書 ID を設定する必要があります。証明書 ID は、ApsaraVideo VOD コンソール > 設定管理 > メディア処理設定 > DRM 証明書管理で取得できます。
[AliPlayerGlobalSettings setFairPlayCertID:@"コンソールから取得した証明書 ID"];VOD 用 VidSts
まず、VOD の DRM 暗号化を設定するを参照して DRM 暗号化を設定します。ApsaraVideo VOD の VidSts メソッドを使用して DRM 暗号化されたビデオを再生する場合、設定は標準ビデオの再生と同じです。追加のパラメーターは必要ありません。
AVPVidStsSource *source = [[AVPVidStsSource alloc] init];
source.region = @"ご利用のリージョン"; // 必須。ApsaraVideo VOD がアクティブ化されているリージョン。デフォルト値:cn-shanghai。
source.vid = @"ご利用のビデオ ID"; // 必須。ビデオ ID。
source.securityToken = @"<yourSecurityToken>"; // 必須。セキュリティトークン。このトークンは、STS の AssumeRole オペレーションを呼び出すことで取得できます。
source.accessKeySecret = @"<yourAccessKeySecret>"; // 必須。一時的な STS 認証情報の AccessKey Secret。この認証情報は、STS の AssumeRole オペレーションを呼び出すことで取得できます。
source.accessKeyId = @"<yourAccessKeyId>"; // 必須。一時的な STS 認証情報の AccessKey ID。この認証情報は、STS の AssumeRole オペレーションを呼び出すことで取得できます。
// source.authTimeout = 3600; // オプション。再生 URL の有効期間 (秒単位)。この値は、ApsaraVideo VOD コンソールで設定された URL 認証の有効期間を上書きします。このパラメーターを設定しない場合、デフォルト値 3600 が使用されます。このパラメーターを設定する場合は、再生が完了する前に再生 URL が期限切れにならないように、実際のビデオの長さよりも大きい値を設定してください。
// 再生ソースを設定します。
[self.player setStsSource:source]ライブ用 LiveStsSource
まず、ライブストリーミングの DRM 暗号化を設定するを参照して DRM 暗号化を設定します。LiveStsSource メソッドを使用して DRM 暗号化されたライブストリームを再生するには、ストリーム URL と STS 認証情報を提供し、ビデオ暗号化タイプを ENCRYPTION_TYPE_FAIRPLAY に設定する必要があります。次のコードは例を示しています:
データソースを作成します。
再生ソースとして
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];STS 認証情報の無効化をリッスンします。
暗号化されたライブ再生中に、暗号化キーがローテーションされることがあります。これが発生すると、プレーヤーは STS 認証情報を使用して新しいキーを要求します。無効な認証情報は再生を中断させるため、認証情報の有効性を監視する必要があります。
__weak typeof(self) weakSelf = self; [self.aliPlayer setVerifyStsCallback:^AVPStsStatus(AVPStsInfo info) { if (info is valid){ return Valid; } if(a valid STS credential can be obtained){ 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()<AVPDrmDelegate>
@end
- (void)viewDidLoad {
self.player = [[AliPlayer alloc] init];
self.player.playerView = self.avpPlayerView.playerView;
self.player.drmDelegate = self;
if(the current URL is for 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 プロバイダーの要件に従って、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 [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
}Flutter クライアント
Flutter クライアントは DRM 暗号化をサポートしていません。
操作手順
Flutter プレーヤーをアプリケーションに統合します。手順とサンプルコードは次のとおりです:
Alibaba Cloud Player SDK for Flutter を統合します。
プレーヤーを作成してビデオを再生します。
基本機能に従ってください。ステップ 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 オペレーションを呼び出して取得します。
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 ビデオ (シングルビットレートおよびアダプティブビットレート) をサポートします。
UrlSource ベースの再生でライセンスベースのプライベート暗号化を使用して暗号化された HLS または MP4 形式のビデオを再生する場合、オーディオまたはビデオの再生 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 標準暗号化
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 オペレーションを呼び出して取得します。
playConfig: value);
});VidSts
ApsaraVideo for VOD の VidSts メソッドで HLS 標準暗号化ビデオを再生する場合、ビデオに他の暗号化タイプのストリームまたは暗号化されていないトランスコード済みストリームも含まれている場合は、暗号化タイプを HLSEncryption に設定して、HLS 標準暗号化ストリームのみを再生できます。次のコードは例です:
M3U8 標準暗号化の書き換えが有効になっている場合は、setHlsUriToken を呼び出してユーザートークンを渡す必要があります。
FlutterAliplayer.setEncryptType(EncryptType.HLSEncryption); // オプション。これを AliyunVoDEncryption に設定すると、プライベート暗号化されたビデオストリームのみが返されます。
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 オペレーションを呼び出すことを推奨します。
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();よくある質問
一般的な問題と解決策:ビデオ暗号化に関するよくある質問。