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 に使用する前に動画を正規化できます:
ffmpeg
をインストール- CLIで動画ファイルの場所へ移動
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>
このコードは以下の動画要素を作成します: