再生認証情報は、有効期間が限定された、特定の動画専用の再利用不可能なトークンです。認証情報の有効期限が切れたり、不正であったりする場合、再生 URL を取得できなくなるため、この方法は高セキュリティの再生シナリオに適しています。
注意事項
-
ApsaraVideo Player は、再生認証情報による再生をサポートしています。サードパーティ製プレーヤーはこの方法をサポートしていません。
-
再生認証情報の有効期間はデフォルトで 100 秒 (最大 3000 秒) です。特定の動画の再生 URL のみを取得するためのもので、共有や再利用はできません。認証情報の有効期限が切れた場合は、ご利用のアプリケーションで更新ロジックを処理する必要があります。
-
再生認証情報の有効期間は、再生 URL の有効期間 (URL 署名が有効な場合) とは異なります。後者は上限なくカスタマイズできます。
-
Alibaba Cloud 動画暗号化 (プライベート暗号化) を使用する場合、動画は ApsaraVideo Player ソフトウェア開発キット (SDK) を使用してのみ再生できます。
有効期間パラメーター:AuthInfoTimeout と AuthTimeout
呼び出す API に応じて、2 つの有効期間パラメーターが適用されます。
-
GetVideoPlayAuth API を呼び出して再生認証情報を取得する場合、有効期間は AuthInfoTimeout パラメーターによって制御されます。
-
GetPlayInfo API を呼び出して再生 URL を取得する場合、有効期間は AuthTimeout パラメーターによって制御されます。
これら 2 つのパラメーターを混同しないようにしてください。AuthInfoTimeout は PlayAuth の有効期間を制御し、AuthTimeout は生成された再生 URL のアクセス可能期間を制御します。
フロントエンドの authTimeout とサーバー側の有効期間
プレーヤー SDK (フロントエンド) の authTimeout パラメーターは、ローカルキャッシュの更新動作のみを制御します。サーバーから返される有効期間をオーバーライドするものではありません。
PlayAuth の ExpireTime フィールドが正式な有効期限のタイムスタンプであり、実際の再生動作を決定します。
-
サーバー側の認証情報が期限切れになっている場合 (ExpireTime が経過した場合)、フロントエンドの authTimeout 設定に関係なく認証は失敗します。
-
サーバー側の認証情報がまだ有効な場合、新しい認証情報のリクエストが成功すれば、フロントエンドの authTimeout が経過しても再生を続行できます。
長時間動画の更新メカニズム
再生認証情報の最大有効期間は 3000 秒です。これより長い動画の場合は、有効期限が切れる 10〜30 秒前に、プレーヤー SDK の認証情報更新メソッド (例:Aliplayer が提供する replayByVidAndPlayAuth や loadByUrl) を使用して PlayAuth を更新してください。ネットワーク遅延によって再生が中断される可能性があるため、有効期限が切れる瞬間まで待たないでください。
高同時実行時のキャッシュ戦略
GetVideoPlayAuth API には、ユーザーあたり毎秒 360 リクエストの QPS 制限があります。高同時実行シナリオでは、サーバー側のキャッシュ戦略を実装してください。
-
PlayAuth をキャッシュし、その有効期間内に再利用して API 呼び出しを削減します。
-
認証情報の有効期限切れは、再生 URL の取得にのみ影響します。再生 URL が一度取得されれば、認証情報が期限切れになっても再生は続行されます。
ブラウザーの互換性
Chrome では再生できるが Edge では失敗する場合、まず動画エンコード形式の互換性を確認し、次に再生認証情報の有効性を確認してください。
認証情報の有効期限切れエラーの処理
クライアント (例:Android SDK) が "playauth is expired" エラーを報告した場合は、アプリケーションに認証情報の有効期限切れリスナーと自動更新ロジックを追加してください。詳細な統合手順については、各プラットフォームの SDK の詳細設定ドキュメントをご参照ください。
全体的なフロー
以下に、CDN 加速ドメインを例として、再生認証情報を取得して動画を再生するフローを示します。
-
クライアントはサーバーに VideoId を送信し、再生認証情報をリクエストします。
-
ご利用のサーバーは、サーバー側 SDK を使用して GetVideoPlayAuth 操作を呼び出し、再生認証情報を取得します。
-
VOD サービスはサーバーに再生認証情報を返します。
-
サーバーはクライアントに再生認証情報を返します。
-
クライアントプレーヤーは、返された認証情報を使用して VOD サービスに再生 URL をリクエストします。
-
VOD サービスはクライアントに再生 URL を返します。
-
クライアントは再生 URL を使用して CDN ノードに再生リソースをリクエストします。
-
CDN ノードにリソースがない場合、またはキャッシュされたリソースの有効期限が切れている場合、オリジン OSS バケットからリソースを取得します。
-
OSS バケットはリソースを CDN ノードに返し、CDN ノードはそれをキャッシュします。
-
CDN ノードはメディアリソースをクライアントに配信します。
次のステップ
Alibaba Cloud は、Web、Android、iOS、Flutter、HarmonyOS 向けのプレーヤー SDK を提供しており、すべて認証情報ベースの再生をサポートしています。ご利用のプラットフォームのドキュメントを選択してください。
-
Web:Web の認証ベースの再生
-
Android:Android の認証ベースの再生
-
iOS:iOS の認証ベースの再生
-
Flutter:Flutter の認証ベースの再生
よくある質問
Web プレーヤー SDK は JWT 認証トークンをサポートしていますか?
いいえ。Web プレーヤー SDK は VID + PlayAuth 再生方式のみをサポートしています。ローカルで生成された JWT Auth で再生に失敗した場合は、標準の PlayAuth 方式に切り替えてください。
GetPlayInfo が動画ステータスが無効またはレビュー中であることを示すエラーを返すのはなぜですか?
再生情報を取得するには、動画が次の両方の条件を満たす必要があります。
-
メインステータス (Status) が 正常 であること。
-
審査ステータス (AuditStatus) が 正常 であること。
ステータスが UploadSucc であるか、審査ステータスが Init である場合は、トランスコードが完了し、審査が承認されるまでお待ちください。GetVideoInfo API を使用して最新の動画ステータスをクエリし、グローバル審査設定を確認できます。
再生時にフォーマットとして mp4 を指定する必要があるのはなぜですか?
これは通常、古いバージョンのプレーヤー SDK における HLS フォーマットの互換性の問題が原因です。最新バージョンのプレーヤー SDK にアップグレードするか、公式のデモコードでテストしてください。
Android で動画の解像度識別子 (LD、HD、SD) を取得するにはどうすればよいですか?
解像度識別子は、再生認証情報方式 (VidSts または VidAuth) を使用している場合にのみサーバーから返されます。URLSource 再生方式を直接使用する場合、解像度識別子は利用できません。
VID + PlayAuth 方式は、サードパーティのクラウドストレージからのリソース再生をサポートしていますか?
いいえ。VID + PlayAuth 方式は、Alibaba Cloud VOD のメディアアセットライブラリにアップロードされた動画のみをサポートしています。サードパーティのリソースを再生するには、まずそれらを Alibaba Cloud VOD に移行またはアップロードして VID を生成する必要があります。