Unity:MovieTexture を使うときの試行錯誤のまとめ

Unityのロゴ。

Unity で MovieTexture を使うときにいろいろと調べたときのまとめです。主に Windows で利用することを想定しています。 詳細な仕様については公式を参照するのが良いと思います。

動画ファイルのインポート

対応するフォーマット

Web 経由で再生する場合には ogg に限定されるようです、クロスプラットフォームの都合上でしょうか。 コーデックのライセンスなどの問題もありますから、そちらかもしれませんが割愛します。

概ね Apple の QuickTime で再生することができるファイルは対応するようですが、一般的なエンコード形式でファイルタイプは .mov, .mpg, .mpeg, .mp4, .avi, .asf が推奨されているようです。 後述しますが、Unity 上で動画リソースを扱う場合には、QuickTime が必要になります。

QuickTime のインストールが必要

Unity 上で動画ファイルを扱うためには Apple 社の QuickTime が必要になります。

サポートが終了している

非常に問題なのですが、Apple は公式に Windows 環境における QuickTime のサポートを終了しています。(2016/06/03) 一応、まだインストールし、利用することができますが、脆弱性を含むので注意する必要があります。

Unity が今後も Windows をサポートする限り、MovieTexture を利用するための別の方法が用意されることは間違いないでしょうが、 企業単位などの製品をリリースするとき、中長期的なサポートが必要な場合には注意する必要があります。

インストールされていないとき

QuickTime がインストールされていないとき、次のような警告が出ます。

Movie importing requires Quicktime to be installed. UnityEditorInternal.InternalEditorUtility:ProjectWindowDrag(HierarchyProperty, Boolean) UnityEditor.DockArea:OnGUI()

QuickTime をインストールした後、Unity を再起動してインポートした動画ファイルを右クリックから「Reimport」する必要があります。

インポート時に表示されるメッセージ

インポート時に次のようなメッセージが表示されました。再エンコード後のファイルサイズが大きくなることを示しているようです。 2047Mb の制限がるような表示ですが、エンコード自体は実行されるのでいまいちよく分かってません。

After transcoding, it may get too large for the limit: 2047 Mb

エンコードには非常に時間がかかるので注意する

Unity に動画を取り込むときは、一般的なテクスチャリソースなどと同じように再エンコードが発生します。 この再エンコードですが、解像度や動画の時間によってはとても時間がかかります。

注意するべき点が 1 つあります。動画のエンコードは Untiy(Editor) ではなく、QuicktimeTools.exe が実行しています。 タスクマネージャかなにかを立ち上げればわかりますが、Unity Editor の CPU 使用率はそれほど高くありません。 が、エンコード中は Unity は操作を受け付けなくなっています。

その他のアセットで再生する

4K 動画の高速な再生などが必要で、かつ QuickTime に非依存な形式で動画再生をサポートする必要があるときは、「AVPro」のようなアセットを利用する必要がありそうです。