by @sharkattack51

March 21, 2015

Unity AVProWindowsMediaプラグインでスムーズな動画再生を行う

実はWMV再生が遅かったので(再生時デコードに時間がかかり、解像度が大きい映像データだとカクつく) その対応方法について

ハードウェアで対応

  • GPU,CPUは速いのが良い
  • SSDが良い
  • AVProWindowsMediaプラグイン自体は64bit対応されているので64bitビルドがお勧め
    • Unity4はEditorが32bitなので環境違いに注意

ColourFormatで対応

  • 速い
    • YCbCr_HD (default)
    • YCbCr_SD
  • 遅い
    • RGBA32

解像度で対応

速↑

  1. 幅、高さともに2乗 (eg 256, 512, 1024, 2048, 4096)
  2. 幅のみ2乗
  3. 幅、高さともに16の倍数
  4. 幅のみ16の倍数
  5. 幅、高さともに4の倍数
  6. 幅のみ4の倍数
  7. 幅、高さともに上記に当てはまらない

遅↓

Codecで対応

  • .aviを使用する

    • mp4は大きな解像度には向いていない
    • Hap が推奨。またはXvid
      • CPUリソースとデコード速度のバランスが良い(最適なのはHap)
    • DirectShowは1080pix以上のH.264に対応していない
    • H.264はCPUリソースを食う
    • 非圧縮
      • デコード処理が無いので早い
      • メモリ読み込みの場合にメモリオーバーになる可能性あり
  • Hap

  • Xvid

MultiThreadingレンダリングオプションで対応

  1. UnityEditorのInspector上にてDebug項目を表示
  2. MTRendering設定

ガベージコレクションを回避

  • 明示的な呼び出しは極力避ける

読み込み

  • LoadMovie()ではなく、LoadMovieFromMemory()
    • 非圧縮の場合は注意