はじめに
WebGLアプリで利用するOSやブラウザによって再生可能な動画形式が異なるため、適当な動画ファイルを再生すると以下の画像の様に動画が再生されないことがあるため、最適な動画形式とその動画形式への変換方法を調べてみました。
調査結果
Unity製WebGLアプリ上でVideoコンポーネントの動作を実機調査した結果
- 走査方式インターレース全般
- iOS-Safariで再生不可
- MPEG-4
- Windows-Chrome , Android-Chromeでは再生不可
→H.264 且つ プログレッシブ方式
だと問題なさそう
参考にしたサイト
動画形式変換方法
本項ではコマンドライン上でffmpeg
を使ってH.264 且つ プログレッシブ方式
に変換する方法で説明します。
(色々GUI付きのアプリを試しましたが良い感じのものが見つかりませんでした。)
- インストール方法
以下を参考にインストールする。
- 変換実行
コマンドライン上で以下のコマンドを実行する
ffmpeg -i input.mp4 -vf "yadif" -c:v libx264 -profile:v high -level 4.0 -pix_fmt yuv420p -preset medium -crf 22 -c:a aac -b:a 128k -movflags +faststart output.mp4
各オプションの説明
必要に応じて任意の設定に変更してみて下さい。
-i input.mp4: 入力ファイル名
-vf "yadif": インタレース解除
-c:v libx264: H.264ビデオコーデッ
-profile:v high: H.264の高プロファイルを使用する。
-level 4.0: H.264のレベル4.0を使用する。
-pix_fmt yuv420p: YUV 4:2:0ピクセルフォーマットを使用する。
-preset medium: エンコード速度と品質のバランスを取るためのプリセット。他のオプションにはslow、fasterなどがあります。
-crf 22: Constant Rate Factor(CRF)は、ビデオの品質を制御する値です。値が小さいほど品質が高く、ファイルサイズも大きくなります。一般的な範囲は18-28で、22は中間的な値です。
-c:a aac: AACオーディオコーデックを使用する。
-b:a 128k: オーディオビットレートを128 kbpsに設定します。
-movflags +faststart: このフラグにより、ビデオがWeb上での再生を開始する前に完全にダウンロードする必要がなくなります。
以上