本トピックでは、ApsaraVideo VOD におけるトランスコードに関するよくある質問に回答します。
トランスコード失敗のトラブルシューティング
ソースファイルがローカルデバイスで再生できることを確認します。これは重要な最初のステップです。トランスコード失敗のほとんどは、ソースファイル自体の問題が原因です。一般的な問題には、ビデオストリームの欠落、無効なメタデータ、フレームエラー、ビデオヘッダーの欠落などがあります。これらの問題は、トランスコード効率監視をトリガーして、トランスコードジョブを失敗させる可能性があります。
ffprobe -show_streams -show_format -of json -i [filePath]コマンドを実行して、ファイルのメタデータを検査し、moov atom の欠落やストリームの異常などの問題を確認します。ffprobe -show_packets -i [filePath]コマンドを実行して、データストリームの問題を確認し、ストリームの長さがメタデータで指定された長さと一致することを確認します。説明メタデータで指定された長さと実際のストリームの長さが一致しない場合、トランスコードが失敗する可能性があります。ファイルに無効なメタデータがある場合は、FFmpeg などのツールを使用してローカルでファイルを修正してから、トランスコード用にアップロードしてください。
エラーコードのリストで対応するエラーコードを見つけて、失敗の具体的な原因を特定してください。
切り捨てやジョブの失敗を防ぐため、テキストウォーターマークで使用される特殊文字をエスケープしてください。
暗号化トランスコードジョブが失敗した場合は、動画暗号化に関するFAQ を参照して、HLS 標準暗号化に関連する一般的なエラーを確認してください。
「トランスコードなし」テンプレートでの再生の問題
この問題は、以下の理由で発生する可能性があります。
原因1: ソース動画が破損しており、再生できません。
原因2: トランスコードなしで直接再生できるのは、MP4、FLV、M3U8、MP3、WEBM 形式の動画のみです。
組み込みの トランスコードなし テンプレートグループを使用して ApsaraVideo VOD に動画をアップロードすると、ソース動画が MP4、FLV、M3U8、MP3、または WEBM 形式の場合、オリジナル画質 のビデオストリームが生成されます。他の形式の場合は、オリジナルビデオ ストリームが生成されます。
オリジナルビデオ ストリームは ApsaraVideo VOD コンソールでプレビューできず、音声・動画の再生URLの取得 API を呼び出して再生 URL を取得することもできません。ソースファイル情報の取得 API を呼び出してソースファイル URL を取得することで再生できます。一方、オリジナル画質 のビデオストリームは ApsaraVideo VOD コンソールでプレビューでき、音声・動画の再生URLの取得 API を呼び出して再生 URL を取得できます。
原因3: ビデオコーデックがブラウザのプレーヤーと互換性がありません。
ソース動画のコンテナは MP4 形式であっても、コンテナ内のビデオストリームが MPEG-4 Part 2 (mp4v) でエンコードされている場合、ブラウザの HTML5 プレーヤーはこのコーデックをサポートしていません。このような動画を トランスコードなし テンプレートグループを使用してアップロードすると、再生できません。ブラウザは H.264 および H.265 コーデックをサポートしています。
コーデックを確認するには、
ffprobe -show_streams -i [filePath]コマンドを実行し、出力のcodec_nameフィールドを確認します。値がmpeg4の場合、動画は MPEG-4 Part 2 でエンコードされており、ブラウザでは再生できません。この問題を解決するには、以下のいずれかの方法を使用します。
ローカルで FFmpeg を使用して動画を H.264 コーデックにトランスコードし、同じファイル名で同じ Object Storage Service (OSS) の場所にファイルを再アップロードしてください。ApsaraVideo VOD は、再アップロードされたファイルに基づいて新しい再生可能な URL を生成します。
ApsaraVideo VOD コンソールで H.264 コーデックを使用するトランスコードテンプレートグループを作成し、それを使用して既存の動画をトランスコードしてください。その後、トランスコードされたストリームを再生できます。
音声ストリームの削減
現在、トランスコードでは1つの音声ストリームのみが保持されます。これは、Output パラメータのaudioMap=0 設定によって制御されます。ユースケースで複数の音声ストリームが必要な場合は、チケットを送信してください。
設定と異なる出力解像度
ApsaraVideo VOD のトランスコードテンプレートでは、画面自動回転機能 (LongShortMode) がデフォルトで有効になっています。この機能が有効な場合、width は長辺に、height は短辺に対応します。これらの値のいずれか一方のみを設定し、もう一方は空白のままにします。特定の出力解像度を強制する場合は、画面自動回転機能を無効にする必要があります。この機能を無効にすると、出力動画が引き伸ばされたり歪んだりする可能性があります。
トランスコード後の動画の向き
これは通常、ソース動画にrotation=-90 などの回転メタデータフラグが含まれている場合に発生します。このフラグは、トランスコード中に動画の幅と高さを入れ替えます。FFmpeg などのツールを使用して、ソースファイルの回転情報を確認できます。ファイル情報を確認するには、次のコマンドを実行してください。
ffprobe -show_streams -show_format -of json -i [filePath]トランスコード済み M3U8 ファイルのブラックスクリーン
まず、ソースファイルのビデオストリームが有効かどうかを確認してください。ソースファイルの最初の Transport Stream (TS) セグメントにビデオデータが含まれていない場合、プレーヤーがビデオを表示できない可能性があります。この問題が発生した場合は、ソースファイルをまず MP4 にトランスコードし、その後、生成された MP4 ファイルを M3U8 にトランスコードしてください。これにより、再生の問題が解決されるはずです。
HDRからSDRへの変換後の露出の問題
ソース動画が HDR の場合、トランスコードテンプレートのダイナミックレンジ設定で SDR マッピング を選択してください。
SDR マッピングはパブリックプレビュー中です。この機能は、パブリックプレビュー終了後に課金対象となります。詳細については、「オーディオ・ビデオエンハンスメント料金」をご参照ください。問題が解決しない場合は、チケットを送信してサポートを受けてください。
トランスコードにおけるmoovボックスの処理
トランスコード後、ApsaraVideo VOD はデフォルトで moov ボックスを MP4 ファイルの先頭に配置します。この動作はカスタマイズできません。moov ボックスがないファイルは処理できず、トランスコードジョブが失敗します。
動画から音声への変換における長さの不一致
長さの一貫性を確保するため、ApsaraVideo VOD のトランスコードロジックは、入力ファイルの最短の音声ストリームをタイミングの基準として使用します。ソースファイルの一部のセグメントでタイムスタンプが連続していない場合、サービスはビデオストリームからメディア情報を取得できない可能性があります。これが長さの推定に影響し、不一致の原因となることがあります。
音声のみのファイルの再生エラー
トランスコードテンプレートでビデオ処理が無効になっていることを確認してください。音声のみのファイルの場合、ビデオ処理を無効にする必要があります。この設定はテンプレートで行うことができます。
ApsaraVideo Media Processing コンソールの [トランスコードテンプレートグループの追加] ページで、トランスコードタイプを [通常トランスコード] に、コンテナ形式を [MP4 (.mp4)] に設定してください。ビデオパラメータで、コーデックを [H.264] に、解像度を [長辺と短辺による] に設定し、長辺と短辺を [128, 4096] の範囲の偶数に設定します。
ビットレート設定の不適用
トランスコードテンプレートでビットレートチェックメカニズムが有効になっているかどうかを確認してください。ApsaraVideo VOD コンソールでは、この機能は 通常トランスコード テンプレートの 条件付きトランスコードパラメータ の下に、ビデオビットレートのチェック または オーディオビットレートのチェック として表示されます。このメカニズムが有効な場合、特定の条件下でテンプレートで設定したビットレートが有効にならない可能性があります。具体的には、出力エンコーダがソースエンコーダと同じで、ターゲットビットレートがソースビットレートよりも高い場合、サービスは設定に応じて、ソースビットレートに合わせて出力ビットレートをリセットするか、ストリームのトランスコードをスキップします。
トランスコードジョブの所要時間
以下の参考値は、トランスコードジョブが処理を開始した後の、一般的なテスト条件下での処理速度を示しています。これらの値にはキュー時間は含まれず、ジョブの合計完了時間を表すものではなく、サービスレベルアグリーメント (SLA) を保証するものでもありません。
H.264 720P への一般的なトランスコードシナリオでは、さまざまなトランスコードアルゴリズムの処理速度は以下のとおりです。
トランスコードアルゴリズム | 処理速度 | 説明 |
通常トランスコード | 平均速度:約3倍速 | この値は、一般的な条件下でのトランスコードフェーズ中の処理速度を反映しています。 |
Narrowband HD™ 1.0 | 平均速度:約1.5倍速 | 処理時間は通常、通常トランスコードよりも長くなります。 |
Narrowband HD™ 2.0 | 通常、1倍速よりも大幅に遅い | 処理時間は、ソース動画の長さよりも長くなることがよくあります。実際の時間は、特定のジョブによって異なります。 |
速度倍率
速度倍率 = 処理時間の単位あたりに処理される動画の長さ
例:
3倍速とは、1分間の処理時間で約3分間の動画コンテンツを処理できることを意味します。
したがって、キュー時間を除くと、30分の動画は理論上約10分で処理されます。参考値は、一般的な H.264 720P トランスコードシナリオにのみ適用されます。
これらの値は、ジョブの合計完了時間を推定するために使用しないでください。
高解像度、より複雑なエンコーディング、またはより負荷の高いパラメーターの場合、処理速度は一般的に低下します。
ソースビデオのビットレート、フレームレート、コンテナ形式、およびストリーム構造の違いは、処理時間に大きく影響します。
Narrowband HD™ 2.0 の処理の複雑さは、通常のトランスコーディングや Narrowband HD™ 1.0 よりも大幅に高いです。
実際の処理時間については、ジョブステータス照会または完了通知をご参照ください。
トランスコードの進捗状況の照会
ApsaraVideo VOD は、トランスコードジョブのリアルタイムの進捗状況を照会する API を提供していません。代わりに、イベント通知を設定して、ジョブのステータスに関する通知を受け取ることができます。
バッチトランスコードは可能か
ApsaraVideo VOD は、既存のメディアに対するバッチトランスコード操作を直接サポートしていません。システムは、トランスコードテンプレートまたはワークフローを使用して、アップロードプロセス中に動画を自動的にトランスコードします。ただし、独自の Object Storage Service (OSS) バケットにメディアを保存している場合は、Intelligent Media Management (IMM) と統合することでバッチトランスコードを実現できます。IMM プロジェクトを作成し、プレフィックスによる一致などの基準を使用してバッチ処理ジョブを定義することで、複数の動画を効率的にトランスコードできます。詳細については、「OSSでのバッチ処理」をご参照ください。
トランスコードジョブの繰り返し失敗
ジョブの失敗にはさまざまな原因があります。返されたエラーメッセージを必ず確認してください。前処理失敗エラーを受け取った場合、サービスがソースファイルをデコードできなかったことを意味します。この場合、チケットを送信し、問題の診断に役立つ Alibaba Cloud アカウント ID とビデオ ID を提供してください。
ApsaraVideo VOD はリアルタイムトランスコードをサポートしているか
ApsaraVideo VOD はファイルベースのトランスコードサービスであり、リアルタイムトランスコードはサポートしていません。
既存動画のバッチトランスコード
ApsaraVideo VOD は、アップロード済みの動画に対する直接的なバッチトランスコード操作をサポートしていません。ただし、Intelligent Media Management (IMM) との連携により、これを実現できます。詳細については、「バッチトランスコードは可能か」をご参照ください。
トランスコード後のウォーターマーク非表示
トランスコードに使用されたウォーターマークテンプレートのパラメータ (サイズ (幅 × 高さ) やオフセットなど) を確認してください。これらの設定により、ウォーターマークが動画の解像度の範囲内に配置されることを確認します。ウォーターマークの設定によって動画フレームの外側に配置される場合、トランスコードジョブが正常に完了しても、ウォーターマークは表示されません。
[ウォーターマークテンプレートの編集] ページでは、オフセットパラメータは [水平オフセット] および [垂直オフセット] フィールドに対応します。これらをウォーターマークの [サイズ (幅 × 高さ)] および [位置] と一緒に確認して、ウォーターマークが動画フレームを超えないようにしてください。
ソース動画にレターボックス (黒い帯) がある場合、ウォーターマークはレターボックス領域に書き込まれる可能性があります。ウォーターマークの色がレターボックスの色に近い場合 (たとえば、黒いレターボックスに黒いウォーターマーク)、コントラストが不十分なためウォーターマークが見えなくなります。ウォーターマークのフォント色をレターボックスとコントラストの高い色 (たとえば、白) に変更するか、水平オフセット (Dx) と垂直オフセット (Dy) を調整して、ウォーターマークをレターボックス領域から離れたフレームの中央に移動してください。
トランスコード失敗コールバックの未受信
トランスコードのイベント通知を設定する際、単一定義トランスコード完了 (StreamTranscodeComplete) イベントのみをサブスクライブし、TranscodeComplete イベントをサブスクライブしていない場合、特定のシナリオで失敗通知を受け取れない可能性があります。たとえば、すべての出力ストリームが失敗する原因となる破損したソースファイルをアップロードした場合、ApsaraVideo VOD は TranscodeComplete イベントの失敗コールバックを送信します。このイベントをサブスクライブしていない場合、トランスコード失敗の通知は届きません。
DRM暗号化動画と非暗号化動画の両方をトランスコードする方法
同じトランスコードテンプレートグループから暗号化ストリームと非暗号化ストリームの両方を出力することはできません。2つの個別のトランスコードテンプレートグループを作成し、各動画に適切なグループを使用してください。
暗号化出力用のトランスコードテンプレートグループを作成してください。DRM 暗号化を有効にし、コンテナ形式を HLS に設定します。
非暗号化出力用のトランスコードテンプレートグループを作成してください。暗号化は有効にしないでください。
ワークフローを使用するか、動画をアップロードする際に異なるトランスコードテンプレートグループ ID を指定してください。暗号化が必要な動画には DRM が有効なグループを割り当て、暗号化が不要な動画には非暗号化グループを割り当ててください。
現在、DRM 暗号化トランスコードは、ApsaraVideo VOD コンソール からのみ、かつ ワークフロー を使用してのみトリガーできます。これは、アップロード中の動画とすでにアップロードされた動画の両方に適用されます。