key blog

VR,AR系の開発を行っているエンジニアです。ほとんど自分の備忘録です。

Unity 動画再生

ベタですがUnityで動画を再生する必要があり、

Unity標準機能であるMovieTextureではいまいちだったのでいろいろ調べました。

 

欲しい要素は下記の通り。

・高速

・早・遅送りができる

(ちなみにMovieTextureで早・遅送りしたい場合は、

 シーンにAudio Sourceを追加しVideoの音声をAudio Clipとします。

 そのAudio SourceのPitchを増減することで動画の再生スピードも変わります....

   どういうこっちゃ...)

 

まずネットでよく見かけたのが、AVPro Windows Media

https://www.assetstore.unity3d.com/jp/#!/content/2546

高速で非常に惜しかったのですが、早・遅送りができない...

 

次にMedia Foundationというキーワードで見つけたのが、あたりでした!

MPMP - Multi Platform Media Player

https://www.assetstore.unity3d.com/jp/#!/content/53391

$175と少々高額ですが、Free Trialバージョンもあります

 

高速且つ早・遅送りも可能で要件を満たしています。

更にAndorid/iOS対応、動画ファイルをUnityにインポートする(=エンコードしている為かすんごい時間がかかる)必要が無いというオマケつき。

 

しかも使い方も簡単です。

 

1.適当なGameObjectに"MPMP" Scriptを付与します。

f:id:k-key:20160813204553p:plain

 

2.videoPathに動画ファイルへのパスを記述します。

 動画ファイルがStreamingAssets内の場合、相対パスで記述可。

 その他の場所にある場合はフルパスを記述すれば大丈夫。

 (何れの場合も拡張子まで入力するのをわすれずに)

 

3.videoMaterialに動画の画をレンダリングするマテリアルを指定

 

4."AutoPlay" "Looping"などのオプションはご利用シーンに合わせて変更

 

5.プロジェクトを実行して、"Load"ボタン(→"Play"ボタン:AutoPlayがFalseの場合)を押下すると再生されます。

 各ボタンをスクリプトで実行するには、

 monoflow.MPMP.Load(), monoflow.MPMP.Play()など。

-- 以上、ちょうかんたん♪

 

Androidでも試してみたのですが、元気に再生しますw

Androidでの注意点は、私が所持している端末(Xperia Z4, Galaxy  S6)のせいかもしれませんがOpenGL ES2.0じゃないと上手くレンダリングしてくれませんでした。

(マニュアルには3.0 or 2.0との記載がある)

 

草々