始める推奨事項Web向けの動画入力の正規化

Web向けの動画入力の正規化

Video API はさまざまな動画フォーマット/コーデックを受け入れ、ほとんどの動画ファイルを問題なくトランスコードまたは配信します。Imgix は取り込んだ動画を正規化し、Video API を通して処理します。

この処理には ロングフォーム動画 では時間がかかるため、動画は正規化および処理が完了するまでストリーミングできません。一方で、ショートフォーム動画 はオンデマンドで迅速にトランスコードされます。

Video API で配信する前に、あらかじめ動画を標準化することも可能です。事前に標準化することで、Video API のパフォーマンスが向上する可能性があります。

以下に、標準の動画入力に関する要件を示します。標準でない動画入力も、Imgix が処理し標準化を行います。

受け入れ可能な動画ファイルフォーマット

あらゆる動画ファイルフォーマットを入力として受け付けます。動画の正常な処理を確実にするためには、動画のメタデータとオリジンからの応答ヘッダーの両方で適切なコンテンツタイプを定義する必要があります。

標準入力

すべての Video API に対して

  • 1080p/2K 以下:2048x2048 以下の動画解像度が標準とされ、1080p(1920x1080)も含まれます。これを超える解像度は 2048x2048 に正規化されます。
  • H.264 動画コーデック:現在最も広く使用されている動画コーデックです。他のコーデックも入力として受け付けますが、すべて H.264 に正規化されます。

OriginファイルにはH.264コーデックの使用を強く推奨します。最高のパフォーマンスと品質が得られ、処理時間も短縮されます。

ロングフォーム動画向け

  • 最大10秒のキーフレーム間隔:HTTPベースのストリーミング(例:HLS)では10秒未満が必要です。10秒を超える場合は10秒未満に制限します。
  • クローズドGOP:オープンGOPの動画はクローズドGOPに正規化されます。
  • 8Mbps 以下:ビットレートは最大で8Mbpsに正規化されます。1つのGOPで16Mbpsを超えない必要があります。
  • 8-bit 4:2:0 以下:HDR動画はSDRに変換されるため、出力映像の色が変化する可能性があります。
  • シンプルなEDL:複雑な編集決定リスト(EDL)はシンプルなものに正規化されます。
  • フレームレート:5〜120fps:この範囲内は保持され、それ以外は30fpsに正規化されます。
  • 正方ピクセル比(1:1):その他の比率は1:1に正規化されます。
  • AAC オーディオコーデック:他の音声コーデックも受け入れますが、AACに正規化されます。
  • 最長12時間の動画:12時間を超える動画は途中で切り捨てられます。

ショートフォーム動画向け

  • 最大解像度 4096x4096:これを超える場合は正規化されます。

標準入力への動画の変更

事前に動画を正規化するには、さまざまなツールが使用可能です。

ffmpeg を使用する

ffmpeg は動画ファイルの編集が可能なオープンソースのCLIツールです。以下の手順で、Imgix Video API に使用する前に動画を正規化できます:

  1. ffmpeg をインストール
  2. CLIで動画ファイルの場所へ移動
  3. input.mp4 を入力、out.mp4 を出力ファイルとして、以下のコマンドを実行:
ffmpeg -i input.mp4 -c:a copy -vf "scale=w=min(iw\,1920):h=-2" -c:v libx264 \
-profile high -b:v 7000k -pix_fmt yuv420p -maxrate 16000k out.mp4

このプリセットを自由に調整して、Imgixの標準入力ガイドラインに適合するようにしてください。

モバイルデバイスを使用する

ほとんどのモバイル端末はデフォルトで H.264 8-bit 4:2:0 の動画を撮影しますが、以下の点に注意してください:

  • ビットレートは 8Mbps 未満であること
  • HDR ではなく SDR を使用すること
  • 出力ファイルは 1080p であること(4KなどはImgixが1080pにスケーリングします)

標準入力ガイドラインに準拠させる必要はありませんが、動画処理時間を最適化するために有効です。

非標準入力

Imgix はすべての動画をトランスコードして配信可能です。ただし、非標準入力の場合は事前に正規化処理が必要です。

そのため、以下のような影響があります:

  • 標準化プロセスにより処理時間が長くなる
  • 静的な標準入力フォーマット設定が適用される
  • 例:フレームレートが標準範囲(10〜120fps)内なら維持、それ以外は30fpsに変換

Web上での動画再生

ショートフォーム動画 はMP4をサポートするあらゆる動画プレイヤーで再生可能です。現代のほとんどのブラウザ、モバイルデバイス、スマートTVがこれに対応しています。

ロングフォーム動画 はストリーミング形式にトランスコードされ、一部のブラウザ・デバイスでは専用プレイヤーが必要です。

以下は hls.js を使った埋め込みプレイヤーの例です:

<script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script>
 
<video
  id="my-player"
  controls
  style="width: 100%; max-width: 1500px;"
  crossorigin="anonymous"
/>
 
<script>
  const video = document.querySelector("#my-player")
  const src =
    "https://assets.imgix.video/videos/girl-reading-book-in-library.mp4?fm=hls"
  if (video.canPlayType("application/vnd.apple.mpegurl")) {
    video.src = src
  } else if (Hls.isSupported()) {
    const hls = new Hls()
    hls.loadSource(src)
    hls.attachMedia(video)
  } else {
    console.error(
      "This is a legacy browser that doesn't support Media Source Extensions",
    )
  }
</script>

このコードは以下の動画要素を作成します: