ApsaraVideo VOD を使用すると、安全で安定したメディア再生機能をアプリケーションに迅速に追加できます。再生認証情報、URL 署名、ビデオ暗号化など、完全なセキュリティシステムを提供します。また、ApsaraVideo VOD はクロスプラットフォーム SDK を提供しており、ビデオ再生を迅速に実装し、開発コストの削減に役立ちます。このトピックでは、メディア再生の仕組み、再生 URL、再生方法、および再生セキュリティについて説明します。
仕組み
音声または動画ファイルが再生できるかどうかは、そのステータスによって決まります。ステータスが 通常 (Status フィールドが 通常) の動画のみ再生できます。これらの動画の再生 URL は、ApsaraVideo VOD API または SDK を使用して取得できます。
ステータスが 審査中 または ブロック済み のビデオは、ApsaraVideo VOD コンソールでのみプレビューできるか、あるいは設定された レビュー用セキュリティ IP アドレス からのみアクセスできます。
以下の図は、ビデオがアップロードされてから再生されるまでのステータスの変化を示しています。
トランスコーディングあり
トランスコーディングなし
したがって、再生 URL を取得する前に、動画のステータスが Normal であることを確認する必要があります。
判断方法
ビデオをアップロードした後、すぐに再生できるわけではありません。ApsaraVideo VOD は、まずビデオが受信されたことを確認する必要があります。アップロードされたビデオがいつ再生可能になるかを判断するには、イベント通知 を使用します。
トランスコーディングされていないビデオまたはオーディオファイルの場合、「ビデオアップロード完了」イベント通知を受信した後に再生できます。その後、GetPlayInfo API を呼び出して再生 URL を取得できます。以下の形式のファイルのみ、トランスコーディングなしで直接再生できます:MP4、FLV、M3U8、MP3、および WEBM。
トランスコーディングされたビデオの場合、「単一解像度トランスコーディング完了」イベント通知を受信した後に再生できます。すべての解像度が利用可能であることを確認するには、ビデオを処理する前に「トランスコーディング完了」イベント通知を待つ必要があります。
前提条件
アクセラレーションドメイン名の設定 詳細については、「ドメイン名の要件」をご参照ください。ApsaraVideo VOD では、CDN アクセラレーションドメイン名を設定する必要はありません (CDN ドメイン名が必要かどうかは、ビデオへのアクセス方法によって異なります)。アクセラレーションドメイン名を設定しない場合は、ビデオ再生 URL の取得操作 (
GetPlayInfo) を呼び出して、期間限定の認証パラメーターを含む OSS URL を取得し、それを使用して再生できます (再生はアクセラレーションドメイン名がなくても機能します)。アクセラレーションドメイン名を設定する場合は、CDN ドメイン名を使用して匿名アクセスを行うか、URL 署名によってより柔軟なキャッシュ制御を実装できます。どちらの方法でも通常の再生がサポートされるため、アクセラレーションドメイン名の設定は再生に必須の手順ではありません。ドメイン名の CNAME レコードを設定する:ドメイン名に CNAME レコードが設定されていることを確認してください。そうでない場合、再生は失敗します。詳細については、「Alibaba Cloud DNS で CNAME レコードを設定する」または「DNSPod で CNAME レコードを設定する」をご参照ください。
トランスコーディング設定を確認する:ApsaraVideo VOD は、アップロードしたメディアファイルを トランスコーディングする か、トランスコーディングしない かを選択できます。詳細については、「オーディオとビデオのトランスコーディング」をご参照ください。
セキュリティ設定を確認する:ApsaraVideo VOD は、ビデオコンテンツを保護するために複数のセキュリティ機能を提供しています。これらには、アクセス制御、URL 署名、リモート認証、ビデオ暗号化、セキュアダウンロード が含まれます。これらのセキュリティ設定によって、ビデオが再生できるかどうかが決まります。詳細については、「ビデオセキュリティ」をご参照ください。
再生 URL
加速ドメイン名を設定します。
ApsaraVideo VOD コンソールで加速ドメイン名を設定すると、再生 URL は CDN ファイル URL になります。URL は、コンソールの [Audio/Video] > [管理] > [Video URL] ページで確認できます。再生 URL は、固定または動的にすることができます。これは、ドメイン名管理で URL 署名を有効にするかどうかによって異なります。URL 署名を有効にして設定する方法については、「URL 署名」をご参照ください。
固定アドレス
セキュリティ要件が低いシナリオに適しており、認証スイッチを無効にした後、認証情報 (URL 内の
auth_keyパラメーターの値) を含まない永続的に有効なアドレスとなります。デフォルトでは、コンソールにドメイン名を追加した後、認証スイッチは無効になっています。動的アドレス
ダイナミック URL は、高いセキュリティ要件が求められるシナリオに適しています。 動的に生成され、特定の期間が経過すると期限切れになります。 ダイナミック URL のデフォルトの有効期間は、URL 署名で設定する
default validity periodです。 また、再生 URL を生成するか、ビデオ再生 URL を取得するときに、有効期限を設定することもできます。 期限切れの URL にアクセスすると、Alibaba Cloud CDN はHTTP 403を返します。動的 URL の例:
http://example.aliyundoc.com/video/aliyun-sample.mp4?auth_key=1500523200-0-0-80cd3862d699b7118eed99103f2a****説明この例では、
auth_keyパラメーターの値は 1500523200 で始まります。これは、2017 年 7 月 20 日 12:00:00 に対応します。デフォルトの有効期間 が 60 分に設定されている場合、URL は 2017 年 7 月 20 日 13:00:00 に失効します。
加速ドメイン名が設定されていない場合
加速ドメイン名が設定されていない場合、返される再生 URL は OSS ファイル URL になります。この場合、URL 署名は利用できませんが、デフォルトで OSS 認証情報が生成されます。詳細については、「OSS - URL に署名を含める」をご参照ください。Get Video Playback URLs API を呼び出して再生 URL を取得する場合、引き続き
AuthTimeoutパラメーターを使用して動画の OSS URL の有効期間 (TTL) を指定できますが、ご自身の AccessKey に基づいて認証情報をカスタマイズすることはできません。コンソールの [ストレージ管理] ページでストレージ
Bucketを public-read に設定した場合、OSS 認証情報を無視できます (詳細については、「ストレージ管理」をご参照ください)。 この場合、URL は永続的に有効になりますが、ホットリンクや不正ダウンロードのリスクがあります。 したがって、ストレージBucketは、可能な限り private に設定する必要があります。
再生 URL の一般的な設定に関する詳細については、「一般的な再生設定」をご参照ください。
再生 URL は、以下のいずれかの方法で取得できます。
直接取得:トランスコーディング完了後のイベント通知を確認するか、GetPlayInfo API を呼び出します。
再生認証情報を使用:ApsaraVideo Player SDK を使用し、GetVideoPlayAuth API を呼び出して再生認証情報を取得します。ApsaraVideo Player SDK は、その認証情報を自動的に使用して再生 URL を取得します。
再生方法
ApsaraVideo VOD コンソールでのプレビュー
ApsaraVideo VOD プレビュープレーヤーは、早送り、音量調節、字幕、オーディオトラック、解像度切り替え、ライブコメントなどの機能を提供します。これらの機能により、ビデオを簡単にプレビューできます。

ApsaraVideo Player SDK の統合
Web 用 ApsaraVideo Player SDK を統合する前に、以下のバージョンと認証要件にご注意ください。
推奨バージョン:Web 用 ApsaraVideo Player SDK 2.37.6 以降を使用してください。このバージョンでは、Chrome 141+ および Edge ブラウザとの HLS 再生の互換性の問題を解決し、プラグインの異常なレンダリングを修正し、メモリリークの問題に対処しています。
SDK バージョン 2.28.0 以降、ライセンス認証が必須となりました。ライセンスを設定するには、次の手順を実行します。
ApsaraVideo VOD コンソール の [SDK Management] ページでライセンスキーを申請します。Web スタンダード版のライセンスは現在無料です。
プレーヤーの初期化中に、
domain(ビデオストレージや CDN ドメインではなく、プレーヤーが埋め込まれているページのドメイン名) とlicenseKeyパラメーターを設定します。
ライセンスの取得と設定の詳細については、「Web プレーヤーライセンスの取得と設定方法」をご参照ください。
リソースパスの変更:SDK バージョン 2.16.3 以降、JS および CSS リソースの URL パスが変更されました。アップグレードの際は、すべてのリソース参照を新しいパスに更新してください。
統合方法:
VID と PlayAuth による再生: サーバーから再生認証情報を取得し、それをクライアントに送信して再生します。この方法は高いセキュリティを提供します。詳細については、「再生認証情報の取得」をご参照ください。
URL ベースの再生: 取得した再生 URL を直接プレーヤーに渡します。詳細については、「再生 URL を使用したビデオの再生」をご参照ください。
スタンダード版とプロフェッショナル版の選択: ApsaraVideo Player SDK には、スタンダード版 と プロフェッショナル版 があります。プロフェッショナル版は、H.266 エンコーディング、DASH、外部字幕、プリロード、プリレンダリング、高度な ABR 戦略などの高度な機能をさらにサポートしており、これらはスタンダード版には含まれていません。オンデマンドまたはライブビデオの再生、可変速再生、解像度切り替えなどの基本的な再生制御のみが必要な場合は、スタンダード版で十分です。上記の高度な機能が必要な場合は、プロフェッショナル版の購入を推奨します。
重要重要: 上位の SDK バージョンでは、より厳格なパラメーター検証が実施されます。URL ベースの再生モードでは、
format:m3u8のような互換性のないパラメーターを指定したり、VID/PlayAuth パラメーターを混在させたりしないでください。SDK は、すべてのレガシー API との下位互換性をサポートしていません。動的ウォーターマーク: Web プレーヤーは動的ウォーターマーク (マーキー/ランダムなちらつき) に対応しています。設定には
watermarkパラメーターを使用します。これはコンソールで設定された静的ウォーターマークと共存できます。ダウンロード制御: ブラウザには、リンク設定では削除できない組み込みのダウンロードボタンがあります。ダウンロード権限を制御するには、SDK を統合し、パラメーターを使用してダウンロードの動作を管理します。
SDK を使用しない自動再生: ApsaraVideo SDK を使用しない場合、ブラウザーの自動再生ポリシーに準拠するため、
autoplay:trueとmuted:trueの両方を設定して自動再生を実装します。MPS 再生方法:
accId/accSecretを使用する MPS 再生方法は、引き続きサポートされていますが、メンテナンスは終了しています。推奨される再生方法に移行することをお勧めします。Blob URL: 新しいプレーヤーでは、アドレスバーに Blob URL が表示されることがあります。これは通常の MSE (Media Source Extensions) の動作であり、エラーではありません。
サードパーティ製プレーヤーの統合
サードパーティ製プレーヤーを統合して、再生 URL を使用してビデオを再生します。
再生 URL を取得した後、それをプレーヤーに渡します。この方法は柔軟ですが、解像度の切り替えや例外処理などの機能を自分で実装する必要があります。
再生セキュリティ (再生とダウンロードの制限)
ビデオセキュリティ
ビデオコンテンツを保護するため、ApsaraVideo VOD は複数のセキュリティ機能を提供しています。これらには、ブラックリストとホワイトリスト、URL 署名、ビデオ暗号化 (Alibaba Cloud 独自暗号化 と HLS 暗号化) が含まれます。詳細については、「ビデオセキュリティの概要」をご参照ください。
アカウントのセキュリティ
アカウントのセキュリティを確保するため、クライアント (特に Web クライアント) で Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey ペアを使用して ApsaraVideo VOD にアクセスしないでください。詳細については、「概要」をご参照ください。
課金に関する説明
加速ドメイン名を設定した場合、オーディオまたはビデオファイルが再生されると、CDN サービスの料金が発生します。
加速ドメイン名を設定しない場合、オーディオまたはビデオファイルが再生されると、ストレージからのアウトバウンドトラフィックの料金が発生します。
詳細については、「基本サービスの課金」をご参照ください。
よくある質問
動画再生の失敗をトラブルシューティングする方法
ネットワークの確認: クライアントが正常なネットワーク接続を持っていることを確認します。
ブラウザの互換性 (Chrome/Edge 141+): 新しいバージョンの Chrome または Edge で m3u8 の再生が失敗する、ちらつく、またはエラー 4400 が返される場合、Web プレーヤーをバージョン 2.37.6 以降にアップグレードし、ライセンスが正しく設定されていることを確認してください。
パラメーター検証: URL ベースの再生モードでは、
format:m3u8を誤って設定したり、VID パラメーターと PlayAuth パラメーターを混在させたりしていないか確認してください。新しいバージョンの SDK では、厳密なパラメーター検証が実施されます。MEDIA_ERR_SRC_NOT_SUPPORTED または fragLoadError (403): Safari のネイティブ再生機能、CORS 設定、ホットリンク防止ホワイトリスト、PlayAuth の有効期間 (100 秒) を確認してください。
ERR_CONNECTION_TIMED_OUT: ローカルネットワーク接続、ファイアウォールルール、CDN ステータスを確認してください。
動画ステータスの確認: 音声と動画の再生 URL の取得 API を呼び出すか、コンソールで動画のステータスが
Normalであることを確認します。再生 URL または認証情報の確認:
auth_keyの有効期限が切れているか、または署名が有効であるかを確認してください。プレーヤーの確認: プレーヤーがビデオ形式をサポートしていることを確認します。ApsaraVideo Player がサポートする形式については、「ApsaraVideo Player SDK の機能」をご参照ください。
モバイルブラウザでコピーした再生 URL を直接開いた場合の再生のカクつきや失敗: これは、再生 URL に有効な URL 認証署名がない場合、またはドメイン名で Referer ホットリンク保護が有効になっていてリクエストがブロックされる場合に発生します。解決策: 再生 URL で URL 認証が有効になっていること、および有効な
auth_key署名が含まれていることを確認します。ドメイン名の Referer ホットリンク保護のホワイトリスト設定を確認します。生の再生 URL を直接公開するのではなく、署名付き再生 URL を使用するか、Player SDK を介してビデオにアクセスすることをお勧めします。WeChat ミニプログラムの
videoコンポーネントで早送り再生中に、音声と映像の同期がずれる: これは、WeChat ミニプログラムのネイティブのvideoコンポーネントが内部的に編集リストを完全にはサポートしておらず、早送り再生やシーク操作中に初期の音声オフセットが蓄積されることが原因で発生します。 解決策: ネイティブのvideoコンポーネントの代わりに ApsaraVideo Player SDK for web を使用するか、ビデオをトランスコードして互換性を向上させることをお勧めします。Chrome ブラウザのアップグレード後に Web プレーヤーが動作しなくなる (HLS 互換性の問題): この互換性の問題を解決するために、Web 用 ApsaraVideo Player SDK をバージョン 2.37.8 以降にアップグレードし、必要に応じて無料のライセンスを申請して設定することを推奨します (ライセンスの申請方法については、「前提条件」の項目の説明をご参照ください)。
その他のエラーのトラブルシューティングに関する詳細については、「再生エラーのトラブルシューティング」をご参照ください。
ヒント:公式デモ を使用して再生をテストしてください。デモが正常に動作する場合、問題はお客様の統合コードにある可能性が高いです。
暗号化された動画を再生する方法
ApsaraVideo VOD は、Alibaba Cloud 独自暗号化や HLS 暗号化など、複数の暗号化方式を提供しています。暗号化を使用するには、暗호화된トランスコードテンプレートグループを設定してビデオをトランスコーディングします。その後、ApsaraVideo Player SDK を使用してビデオを復号化して再生します。詳細については、「ビデオ暗号化」をご参照ください。
暗号化再生に失敗し、Rand パラメーターが無効であることを示す InvalidParameter が返される
暗号化ビデオの再生が、Rand パラメーターが無効であることを示す InvalidParameter エラーで失敗した場合、再生設定で対応する encryptType パラメーターを設定する必要があります。 詳細については、「ビデオ暗号化」をご参照ください。
一般的な Player SDK API の使用上の注意点
以下は、Player SDK API を呼び出す際の一般的な落とし穴と正しい使用パターンです。
iOS での再生位置の取得:
onCurrentPositionUpdateコールバックのpositionパラメーターを使用します。シーク後は、AVPEventSeekEndイベントをリッスンしてから位置を取得します。getPlayTime() の戻り値: 再生時間を秒単位の整数で返します。これは実際の再生時間 (一時停止やシーク操作を除く) を反映します。再生速度を調整している間、時間は実際の経過時間に基づいて計算されます。
selectTrack を使用した画質の切り替え: 画質の切り替え時に
selectTrackが失敗した場合、一時的な回避策としてsetQuality+setStartTime+prepareを使用してください。replayByVidAndPlayAuth を使用した動画の切り替え:
replayByVidAndPlayAuthを使用して動画を切り替える場合、古いバージョンの iOS でプライベート暗号化をサポートするには、swScriptURLパラメーター (絶対 HTTPS URL) を明示的に渡す必要があります。開始時間の設定: 再生開始時間を設定しても、ユーザーによる手動のシークバー操作には影響しません。
バッファのクリーンアップ: SDK は現在、再生中の動的なバッファクリーンアップ API をサポートしていません。
Web プレーヤーライセンスの取得と設定方法
Web プレーヤーライセンスに関するよくある質問:
申請方法: ApsaraVideo VOD コンソール の [SDK Management] ページで無料でライセンスを申請します。
ドメインバインディング: ライセンスは、プレーヤーが埋め込まれているページのブラウザのアドレスバーに表示されるドメイン名にバインドされます (サブドメインもサポート)。ビデオストレージや CDN アクセラレーションドメインにはバインドされません。
証明書ファイルは不要です:ライセンスは API 経由で取得される文字列キーです。サーバーに証明書ファイルをダウンロードまたはデプロイする必要はありません。プレーヤーの初期化時に、
domainとlicenseKeyパラメーターを渡すだけです。HTTPS でのローカルデバッグ: ローカルテスト中に HTTPS 証明書の問題でライセンス検証が失敗する場合、以下のいずれかの方法を使用できます (テストのみ)。
mkcertを使用して自己署名証明書を生成します。Chrome の起動時に、
--ignore-certificate-errorsフラグを追加します。有効な HTTPS テストサーバーにデプロイします。
SDK 2.34 以降: プレーヤーが正常に機能するためには、ライセンス設定が必須です。
古い SDK バージョンのデータコンプライアンス: 古いバージョンの Web 用 ApsaraVideo Player SDK にはデータコンプライアンスの問題があります。中国本土以外でプレーヤーを使用する場合、ライセンスが必要なバージョンにアップグレードし、有効なライセンスを紐づける必要があります。ライセンスの申請と設定方法については、「ライセンスに関する FAQ」をご参照ください。
Web プレーヤーのスタイルとコンポーネントの問題への対処方法
プレーヤーのスタイルとコンポーネントに関する一般的な問題と解決策:
ローカルデプロイメントでアイコンが表示されない: ローカルデプロイメントでアイコンが表示されない場合は、
/skins/default/ディレクトリ全体をダウンロードするか、CSS の相対パスを CDN アドレスに更新します。QualityComponent の画質切り替えエラー:
QualityComponentを使用して画質を切り替える際に、t.getQuality is not a functionエラーが発生した場合は、設定にargsコールバック関数を追加し、aliplayercomponentsをバージョン 1.1.2 以降にアップグレードしてください。カバー画像がプログレスバーに重なる (VID + PlayAuth モード): VID + PlayAuth モードでカバー画像がプログレスバーに重なる場合は、CSS (
.prism-cover) を使用して非表示にするか、autoplay+mutedを有効にしてこの問題を回避します。WeChat ブラウザの HLS 互換性:WeChat の内蔵ブラウザでの HLS 再生の問題については、
useHlsNative: falseを設定して fMP4 再生ソリューションを強制します。
npm で Player SDK をインストールする際にバージョンを指定する方法
特定のバージョンの Player SDK をインストールするには、次のコマンドを使用します。
npm install aliyun-aliplayer@<version> --saveたとえば、バージョン 2.27.1 をインストールするには、次のようにします。
npm install aliyun-aliplayer@2.27.1 --save