このトピックでは、ApsaraVideo Player SDK の各プラットフォームでの使用に関するよくある質問にお答えします。
標準ライブストリーミングにおける RTMP または HTTP-FLV の選択
HTTP-FLV を推奨します。
-
ApsaraVideo Live コンソールでは、RTMP と HTTP-FLV の両方の URL が生成され、ストリームデータは同一です。異なるのは転送プロトコルのみです。
-
HTTP は CDN、通信事業者、ネットワーク機器全体で広く最適化されており、ポート 80/443 は一般的にホワイトリストに登録されています。RTMP のポート 1935 はファイアウォールでブロックされる可能性があり、再生エラーの原因となります。HTTP-FLV は、複雑なネットワーク環境において、より高い安定性、バッファリングの削減、低レイテンシーを実現します。
再生エラー
VOD 再生エラーのトラブルシューティング
Player のエラーメッセージとネットワークリクエストを確認して、エラーを診断します。エラーの原因としては、ストリームエンコーディングの問題、ネットワークエンドポイントまたは CDN の問題、フォーマットの非互換性、バケット設定の問題などが考えられます。一般的な原因は以下のとおりです。
-
延滞料金:アカウントの残高を確認してください。アカウントに延滞料金がある場合、動画再生は無効になります。
-
ネットワークの問題: プレーヤーはエラーコード
4400を返します。エラーコード4400は、サーバーまたはネットワークの問題によりリソースが読み込めないことを示します。SSL 証明書が設定されており、有効であることを確認してください。 -
フォーマットの問題:動画フォーマットが Player と互換性がありません。サポートされているフォーマットは、「Player SDK features」に記載されています。
説明認証付きの M3U8 ファイルを再生するには、カスタムドメイン名が必要です。「高速化ドメイン名の追加」をご参照ください。
-
バケットの問題:
バケットが無効であるか、プライベートバケットの認証が期限切れです。バケット認証を無効にし、アクセス権限をpublic-readに設定してください。 -
クロスドメインの問題:高速化ドメイン名のリージョンと動画再生のリージョンが異なる場合、再生に失敗します。新しい高速化ドメイン名を作成するか、既存のドメイン名のリージョンを変更してください。
ローカル M3U8 動画の再生時のエラー
M3U8 ファイルは、トランスポートストリーム (TS) セグメントを参照します。ローカルでの再生には、M3U8 ファイルで指定されたパスに、すべてのセグメントがローカルマシン上に存在する必要があります。ローカル M3U8 ファイル内のリモート URL はサポートされていません。
M3U8 インデックスファイルと、対応する .ts セグメントファイル (000000.ts や 000001.ts など) は、同じディレクトリに配置する必要があります。
ローカルの M3U8 ファイルは、このディレクトリ構造に従う必要があります。
外部共有時の再生エラー
以下の手順に従って問題をトラブルシューティングしてください。
-
動画が ApsaraVideo VOD にまだ存在することを確認してください。
-
高速化ドメイン名が追加されているかどうかを確認してください。
-
高速化ドメイン名が追加されていない場合:ストレージ
バケットのアクセス権限を確認してください。バケットがプライベートの場合、再生には認証が必要です。認証を無効にしてバケットをpublic-readに設定できますが、これはセキュリティリスクを伴います。 -
高速化ドメイン名が追加されている場合:認証が有効になっているかどうかを確認してください。有効な場合は、有効期限を延長するか無効にしてください。認証を無効にすると、セキュリティリスクが生じます。
-
再生の異常
再生中に音声が出ない
ApsaraVideo Player SDK は Alibaba Cloud サービスに最適化されています。他のソースからの再生 URL では、音声が出ないなどの問題が発生する可能性があります。再生ソースを確認してください。
動画の起動が遅い
-
MP4 動画の起動が遅い場合、
moovアトム (音声/動画インデックス) がmdatアトム (音声/動画データ) の後に配置されている可能性があります。動画をトランスコードしてmoovをmdatの前に移動すると、起動が高速化されます。-
「推奨されるトランスコーディングテンプレート」をご参照ください。
-
moovアトムの位置を確認するには、次のコマンドを実行してください:# ソースビデオの URL には、ローカルファイルパスまたはオンライン URL (例: http://pla****.alicdn.com/video/aliyunmedia.mp4) を指定できます。 ffmpeg -v trace -i "source_video_url" 2>&1 | grep -e type:\'mdat\' -e type:\'moov\'正常なシナリオでは、
moovアトムはmdatアトムの前にあり、ファストスタート最適化を示しています。 出力例を以下に示します。異常なシナリオでは、
moovアトムはmdatアトムの後にあります。
-
-
Android および iOS では、ApsaraVideo VOD はミリ秒レベルの起動ソリューションを提供しています。「ApsaraVideo Player を使用した高速読み込みフルスクリーン再生の実現」をご参照ください。
暗号化動画の再生
ブラウザでの DRM 再生の問題
ApsaraVideo Player for Web による DRM 暗号化再生のブラウザサポートは限定的です。サポートされているブラウザは、「機能の互換性」に記載されています。
MtsHlsUriToken パラメータ
MtsHlsUriToken は、HLS 暗号化のユーザートークンです。M3U8 マニフェストには、復号化キーサーバーへの URL が含まれています。アクセスを制限するには、キーサーバーに認証レイヤーを追加し、認証ロジックによって生成された MtsHlsUriToken を復号化キー URL に追加して検証します。
暗号化を設定する際は、MtsHlsUriToken を生成するトークン発行サービスを構築してください。「HLS 暗号化 - ステップ 4」をご参照ください。
クロスドメイン再生
OSS からのクロスリージョン再生が遅い
中国本土から UK (London) リージョンにアクセスすると、高レイテンシーが発生します。高速化ドメイン名を追加し、Global Accelerator を使用してパフォーマンスを向上させてください。
海外再生時のアクセス遅延とバッファリング
バッファリングは通常、ネットワークの不安定性によって発生します。長時間のバッファリングにより Player エラーが発生する場合は、CDN の不安定性が示唆されます。頻繁なバッファリングは、動画ビットレートに対して帯域幅が不足していることを示している可能性があります。ネットワーク速度を上げるか、ビットレートを下げてください。
Object Storage Service (OSS) 動画の再生
OSS 再生時の過剰なリクエスト
ソース動画を確認してください。Player がデコード中に重複リクエストを送信している可能性があります。再生前に ApsaraVideo VOD テンプレートで動画をトランスコードしてください。「動画および音声のトランスコーディング」をご参照ください。
画像がダウンロードではなくプレビューされる
ApsaraVideo VOD の画像は、カスタムドメイン名を使用した場合にのみ、ブラウザでプレビューできます。デフォルトドメインではダウンロードが強制されます。「高速化ドメイン名の追加」をご参照ください。
SSL 証明書の問題
一部のコンピュータでエラーコード 4400 により動画の再生に失敗する
エラーコード 4400 は、サーバーまたはネットワークの問題、あるいはサポートされていないフォーマットが原因でリソースを読み込めないことを示します。SSL 証明書が設定されていることを確認してください。
再生 URL
短い再生 URL の生成
プライベート バケットでは、認証文字列を含む長い再生 URL が生成されます。バケットを public-read または public-read-write に設定すると、認証文字列が削除され、より短い URL が生成されます。「ストレージバケットの管理」をご参照ください。
バケットのアクセス権限を public-read または public-read-write に設定すると、不正なホットリンクやダウンロードのリスクがあります。本番環境での使用は推奨されません。
トランスコードされていない動画の再生の問題
videoID と playauth を使用する ApsaraVideo Player SDK は、トランスコードされた動画のみを再生します。トランスコードされていない動画には直接 URL が必要です。この URL は、GetMezzanineInfo を呼び出して取得するか、ApsaraVideo VOD コンソールで確認できます。
VOD 再生 URL は固定されていますか?
動画のストレージがプライベートの場合、再生 URL は時間制限があります。auth_key パラメータは有効期限に基づいて変化します。
永続的な URL を取得するには、ストレージバケットを public-read または public-read-write に設定してください。? 文字より前の URL が永続的なアドレスになります。「ストレージバケットの管理」をご参照ください。
バケットのアクセス権限を public-read または public-read-write に設定すると、不正なホットリンクやダウンロードのリスクがあります。本番環境での使用は推奨されません。
再生がブラウザにリダイレクトされる
再生は、ブラウザとデバイスのデコード機能に依存します。サードパーティアプリケーションは、互換性のためにブラウザにリダイレクトすることがよくあります。
再生中に更新された動画が表示されない
動画を更新した後、視聴者が最新バージョンを取得できるように CDN キャッシュを更新してください。コンソールでは、「更新とプリフェッチ」を使用します。API または SDK 経由では、PreloadVodObjectCaches または SubmitMediaRefreshJob を使用します。
各フレームのピクセルデータの取得
-
Android Player:
OnRenderFrameCallbackコールバックをリッスンすることで取得できます。 -
iOS Player:
onRenderingFrameコールバックをリッスンすることで取得できます。player.renderingDelegate = self; #pragma mark CicadaRenderingDelegate - (BOOL)onRenderingFrame:(CicadaFrameInfo*) frameInfo{ if(frameInfo.frameType==Cicada_FrameType_Video){ // 動画 NSLog(@"receive HW frame:%p pts:%ld foramt %d", frameInfo.video_pixelBuffer, frameInfo.pts, CVPixelBufferGetPixelFormatType(frameInfo.video_pixelBuffer)); } else if (frameInfo.frameType==Cicada_FrameType_Audio){ // 音声 } return NO; } -
ApsaraVideo Player for Web:この機能はサポートされていません。
AVI 動画の再生 URL を取得できない
GetPlayInfo API は、AVI 形式の動画のストリーム取得をサポートしていません。したがって、この API に依存する SDK メソッドでは、AVI 動画の再生 URL を取得できません。
AVI 動画の再生 URL は、ApsaraVideo VOD コンソールで確認してください。「メディアアセット情報の表示」をご参照ください。
再生アドレス取得時の GetPlayInfo API エラー:The video has no stream to play for the request parameter
以下の手順に従って問題をトラブルシューティングしてください:
-
メディアアセットのストレージクラスを確認します。
デフォルトでは、GetPlayInfo は Standard ストレージのメディアアセットの再生ストリームのみを返します。Standard 以外のストレージの音声および動画の再生ストリームを取得するには、
PlayConfigパラメータのStorageClassを All に設定してください。StorageClassのその他の有効な値には、Standard、IA(低頻度アクセスメディア用)、Archive(Archive メディア用)、Cold Archive(Cold Archive メディア用)、Source IA(IA ソースファイル用)、Source Archive(Archive ソースファイル用)、Source Cold Archive(Cold Archive ソースファイル用)、Changing(ストレージクラスが変更中のメディア用)、SourceChanging(ストレージクラスが変更中のソースファイル用) があります。パラメータを空のままにすると、フィルタは適用されません。 -
メディアアセットにトランスコードされたストリームがあることを確認します。
トランスコードされたストリームを取得するには、まず「動画および音声のトランスコーディング」を実行してから、
GetPlayInfoAPI を呼び出す必要があります。ソースファイルの URL を取得するには、「GetMezzanineInfo」をご参照ください。
バッファリングの問題
バッファリングの削減とキャッシュヒット率の向上
URL 署名の設定、更新とプリフェッチの使用、キャッシュ設定の最適化、URL パラメータのフィルタリングにより、キャッシュヒット率を向上させます。
シーク時のバッファリング
キーフレームが少なすぎると、シーク時に Player が最も近いキーフレームを見つけるために大きなセグメントをダウンロードする必要があり、バッファリングが発生します。キーフレームを追加するために動画をトランスコードしてください。「動画および音声のトランスコーディング」をご参照ください。
H.266 デコーダープラグイン
エラー 0x200600001 MEDIA_PLAYER_ERROR_CODEC_VIDEO_NOT_SUPPORT が報告される
message が vvc plugin not enabled の場合、プラグインがアプリケーションレイヤーで有効になっていません。AliPlayerGlobalSettings.enableCodecPlugin を呼び出して有効にしてください。
メッセージが vvc plugin not loaded の場合、プラグインが正常に統合されていません。プラグインライブラリがインポートされていることを確認するか、loadlibrary を明示的に呼び出してください。
0x50020002 MEDIA_PLAYER_ERROR_CODEC_PREMIUM_INVALID エラー
このエラーは、Professional Edition ライセンスが不足していることを示しています。H.266 デコーダープラグインには Professional Edition ライセンスが必要です。「ライセンスの管理」をご参照ください。
動画サムネイル
動画サムネイルを取得できない
ApsaraVideo VOD コンソールはデフォルトで HTTPS を使用します。コンソール内でのプレビューには、サムネイル URL が HTTPS をサポートしている必要があります。具体的なエラーについては、ブラウザの開発者ツールを確認してください。
動画審査
手動審査中に動画を再生できない
ApsaraVideo VOD には、2 つの審査モードがあります:
-
審査前に公開:トランスコード後、動画は正常とマークされ、すぐに再生できます。その後、手動で動画を審査する必要があります。審査中にブロックされると、再生が停止します。
-
公開前に審査:トランスコード後、動画は審査に入り、審査中とマークされます。再生は、手動承認後にのみ開始されます。
パラメータの定義
videoID パラメータ
セキュリティ上の理由から、ApsaraVideo VOD は、メディアファイルをアップロードする際に、直接 URL ではなく videoID を返します。GetPlayInfo API を呼び出すことで、videoID を取得することもできます。
ApsaraVideo VOD に動画をアップロードすると、videoID が返されます。
ApsaraVideo VOD コンソールで videoID を取得することもできます。以下の手順に従ってください:
-
ApsaraVideo VOD コンソールにログインします。
-
左側のナビゲーションペインで、メディアファイル の [オーディオ/ビデオ] をクリックします。
-
動画リストで
videoID(Video ID) を確認します。
コンソールから取得した videoID を使用して、ダウンロードと再生をテストしてください。ファイルをアップロードするには、「Upload SDK」を使用してください。
AccessKey ID と AccessKey Secret
AccessKey ID と AccessKey Secret は、Alibaba Cloud API にアクセスするための認証情報です。AccessKey ID は識別子であり、AccessKey Secret は API リクエストパラメータに署名して改ざんを防ぎます。AccessKey Secret は機密情報として保管してください。
AccessKey ペアを取得するには:
-
ApsaraVideo VOD コンソールにログインします。
-
右上隅でプロフィール画像にポインタを合わせ、[AccessKey 管理] をクリックします。
-
[AccessKey 管理] ページで、AccessKey ペアを作成するか、既存の AccessKey ID の AccessKey Secret を表示します。
playKey パラメータ
playKey (または API キー) は、ApsaraVideo Player SDK が動画再生 URL を取得する際にリクエストを認証します。これは、AccessKey ベースのセキュリティに加えた二次認証として機能し、ホットリンクを防ぎます。playKey は、Flash、H5、iOS、Android 用に提供されています。
キーのセキュリティを確保するため、playKey を表示する際には、携帯電話の確認コードを使用して本人確認を行う必要があります。
playKey を取得するには:
-
ApsaraVideo VOD コンソールにログインします。
-
左側のナビゲーションペインで、設定の管理 > 配信の高速化設定 > ダウンロードの設定 を選択し、セキュアダウンロードモードを有効にします。
-
「キーの取得」セクションで、一意のアプリ識別子 と 秘密鍵 を入力します。
-
キーを生成してダウンロード をクリックします。
playauth パラメータ
ApsaraVideo Player SDK は、さまざまなユースケースに対応する 3 つの再生モードをサポートしています。playauth を使用する方法が最も安全であり、推奨されます。
playauth は、videoID と認証情報を含む暗号化されたトークンです。サーバーは、このトークンを ApsaraVideo VOD にリクエストし、クライアントに渡します。クライアントはこれを使用して、再生 URL を安全に取得します。
|
再生モード |
ユースケース |
長所と短所 |
推奨事項 |
|
AK ベース (setDataSource) |
テスト目的。 |
認証情報の漏洩リスクが高い。この方法では、AccessKey ID と AccessKey Secret をクライアント側のコードに直接埋め込む必要があるため、クライアントが逆コンパイルまたは侵害された場合に漏洩する可能性があります。 |
商用利用には推奨されません。 |
|
PlayAuth ベース (setAuthInfo) |
商用本番環境での使用。 |
安全。動画 URL やその他の機密情報は、クライアント側で公開されません。 |
商用利用に推奨されます。 |
|
URL ベース (ローカルおよびネットワーク) |
ローカル動画ファイルまたはパブリック動画 URL の再生。 |
シンプル。あらゆるソースから動画を再生できます。 |
ローカル動画または外部ネットワーク URL のコンテンツを再生する必要がある場合に使用します。 |
ワークフロー:サーバーが playauth を取得 > サーバーが playauth をクライアントに送信 > クライアントが動画を再生
-
playauth の取得:アプリケーションサーバーがサーバー側 SDK を呼び出して、ApsaraVideo VOD サービスに
playauthをリクエストします。 -
動画の再生:ApsaraVideo Player SDK は、
videoIDとplayauthを使用して、ApsaraVideo VOD サービスに動画の再生 URL をリクエストし、動画ストリームを読み込んでデコードして再生します。
playauth の有効期限は 100 秒で、特定の動画の再生 URL を取得するために 1 回のみ使用できます。playauth の有効期限が切れた場合は、新しいものをリクエストする必要があります。
再生 URL の有効期限が切れた場合は、新しい playauth を取得し、それを Player SDK に渡して URL を更新する必要があります。
プライマリアカウントを保護するため、特に Web 再生のシナリオでは、RAM ユーザーの AccessKey ペアを使用することを推奨します。