縦向きのスマートフォン動画は、向きによって異なるフィルターパスが呼び出されるため、通常トランスコードに失敗しやすくなります。ただし、実際の原因はコーデック、フレームレート、HDR、またはハードウェアの制限である場合もあります。
縦向きか横向きかを最初の検証変数にしますが、それだけで判断しないでください。回転メタデータ、フレームレートモード、コーデックプロファイル、ビット深度、HDRの状態、そしてサーバーが選択した正確なハードウェア処理段階を比較します。目的は、正常に処理できる動画と異なる最初のパイプライン段階を特定することです。
縦向きがトリガーであることを確認する
同じスマートフォン、カメラモード、解像度、フレームレート、近い長さで撮影した、トランスコードに失敗する縦向き動画と、正常に処理できる横向き動画を1本ずつ比較します。両方について、ダイレクトプレイとトランスコードの判定結果を記録します。
縦向きのファイルでは、すべてのピクセルを物理的に回転させる代わりに、表示方向を回転メタデータとして保存することがよくあります。そのため、トランスコーダーが失敗する動画に対してだけ、追加の回転またはスケーリング処理が実行される場合があります。
同じソースから作成した横向きのコピーが正常にトランスコードできる場合は、向きの処理を調べます。両方とも失敗する場合、縦向きであることは単なる偶然であり、コーデックまたはフレームレートの処理を優先して確認すべきです。
回転とフィルターの動作を調べる
ストリームとコンテナのメタデータを読み取り、回転情報が表示マトリックス、サイドデータ、またはすでにピクセルサイズへ反映された状態のどれで表現されているかを確認します。トランスコーダーのログで、最初に発生したフィルターエラーを比較します。
モバイル動画では、モバイル向け回転メタデータがよく使われます。デコード自体は対応していても、ハードウェアフィルターやエンコーダーが回転後のフレーム形状を受け付けられないため、後段で失敗することがあります。
同じ出力サイズで、ソフトウェアのみを使ったトランスコードを1本テストします。回転またはスケーリングの段階でソフトウェア処理は成功し、ハードウェア処理だけが失敗する場合は、ライブラリ全体を変換するのではなく、元のファイルを維持したままアクセラレーションまたはフィルターの経路を調整します。
可変フレームレートを個別に確認する
失敗するスマートフォン動画が可変フレームレートを使用しているか、また比較対象の成功したファイルが固定フレームレートであるかを測定します。失敗付近で、タイムスタンプ、フレーム間隔、または同期に関するエラーがないか確認します。
スマートフォンは撮影条件に適応するため、可変フレームレートで録画することがよくあります。このタイミングの挙動によって、縦向き動画と関係があるように見えるトランスコーダーのバグが表面化することがあります。
判別のために、テスト用コピー1本だけを固定フレームレートへ変換します。それで成功した場合は、失敗するパイプラインを更新または再設定します。すべての縦向き動画を恒久的に変換する必要があると決めつけないでください。
コーデック、HDR、ハードウェアの対応状況を比較する
HEVCまたはH.264のプロファイル、ビット深度、クロマ形式、HDRメタデータ、そして実際に選択されたハードウェアデコーダーとエンコーダーを記録します。スマートフォンのポートレートモードでは、別の撮影プロファイルが同時に有効になることがあります。
最新のトランスコードパイプラインは、デコード、フィルター、カラー処理、エンコードという複数の段階で構成されています。そのため、ある段階で成功しても、アクセラレーションされた処理経路全体がソースに対応しているとは限りません。
アクセラレーションの段階を一度に1つずつ無効にします。ソフトウェアデコードとハードウェアエンコードの組み合わせで成功すれば、すべての設定を一度に変更するよりも、問題箇所をはるかに正確に絞り込めます。
1つ変更したら実際のクライアントで再テストする
確認できた最小限の修正を適用し、トランスコードのきっかけとなったクライアントから、元の縦向き動画を再生します。起動、シーク、再生開始から数分間のログを確認します。
ホームメディアサーバーのワークフローに関するZimaSpaceの関連ガイドを参照すると、単独のFFmpegコマンドだけで成功を判断するのではなく、実際の家族向けメディア環境で最終テストを行えます。
元のファイルが、回転、タイミング、ハードウェアに関するエラーを発生させず、繰り返しトランスコードできれば問題は解決です。将来のスマートフォンやサーバーのアップデートと比較できるよう、変更前後のログを保存しておきます。
よくある質問
9:16の動画には、自動的に特別なトランスコーダーが必要ですか?
いいえ。向きそのものが重要な問題とは限りません。回転メタデータ、フレームレートの挙動、コーデックプロファイル、HDRメタデータ、選択されたハードウェアフィルターの経路を確認する方が、原因の判別に役立ちます。
同じ縦向き動画をダイレクトプレイできるのに、トランスコードを開始すると失敗するのはなぜですか?
ダイレクトプレイでは元のストリームを変更せずに渡せますが、トランスコードではデコード、回転またはスケーリング、トーンマッピング、エンコード、一時ストレージが必要になります。
すべてのスマートフォン動画を、まずH.264へ変換すべきですか?
コーデックまたはハードウェアの互換性が実際の制約であることを、管理された比較テストで確認できた場合に限ります。原因を特定する前に一括変換すると、調査に必要な証拠が失われ、不要な作業が増えます。
サポートとヒント
もっと読む

Plexは別のDockerコンテナとGPUを共有できますか?
Plexと別のコンテナは同じGPUにアクセスできることが多いですが、ドライバーのサポート、デバイスマッピング、ビデオエンジンの負荷、メモリ、復旧動作をテストする必要があります。

Plexのエラーがクライアント側とサーバー側のどちらに起因するかを見分ける方法
別のクライアントで同じ項目を再現し、セッションパスを比較してから、スコープによって障害の実際の所在が特定された後にのみサーバーの証拠を収集してください。

Plexのキャッシュとトランスコード用一時ストレージを設定する方法
永続的な Plex の状態を保護しつつ、トランスコードの一時ファイルを適切なローカルストレージに配置し、クリーンアップ、空き容量、再起動時の動作を確認します。

