UE4 ゲーム内で動画を再生する方法
目次
・動画再生可能なフォーマット
・動画再生を行うには
・まとめ
環境
・Unreal Engine4.17.2
・Windows10
動画再生可能なフォーマット
Platformごとに使用可能なフォーマットは公式ドキュメントに記載があります。
Unreal Engine | メディア フレームワークの技術リファレンス
サポート対象のファイル、URL、キャプチャ デバイスより2017/10/30段階での対応画像も貼っておきます。
Windowsで.aviと.mp4が対応されていることが確認できました。
今回はこの2つの動画フォーマットについて書きます。
他のフォーマットでもプラットフォームで対応されているものであれば、再生可能だと思います。
動画再生を行うには
①Windowsで再生するためには
Windowsで再生をするためには下記プラグインを有効にする必要があります。
基本的には有効になっているかと思いますが、パッケージ容量削減のために無効にしている場合は注意が必要です。
WMFとはWindows Media Foundationの略称です。
Microsoft Media Foundation (Windows)
調べてみると難しそうな用語が並んでいますが、ざっくりいってしまうと
「マルチメディアを扱うためのMicrosoftのAPI群」です。
②動画をインポートする
先ず、動画の保存先には注意が必要です。
Content/Movies以下に動画ファイルを保存する必要があります。
続いて.aviと.mp4で違いがあります。
先ずはaviについて。
こちらは凛さんがブログにまとめてくださっています。
UE4 UMGでムービー(動画)を再生する 凛(kagring)のUE4とUnityとQt勉強中ブログ
直接Media Playerが生成されれば、そこからMedia Textureを生成してマテリアルに適用する等で直ぐに再生が可能ですね。
続いてmp4の場合について。
mp4をインポートしてみると下図のようにFile Media Sourceが生成されると思います。
③Windowsで再生するために設定を変更する
先程インポートして生成されたFile Media Playerの
Windowsの欄をWMFに変更します。
この際に①で挙げたプラグインのWMF Media Playerが無効だと選択できません。
④Media Playerを作成する
MediaからMedia Playerを作成します。
すると下記のWindowが表示されます。
今回は動画ですので、下のVideoにチェックを入れましょう。
作成すると下記のように
Media PlayerとMedia Textureが作成されます。
Media Playerを開いてみると下図のようなUIが表示されると思います。
そこで、Playを押下して動画が正しく再生されることを確認しておきましょう。
今回はテスト用にContentExampleのMediaExampleを使用してみました。
⑤再生する
再生するためにはマテリアルを作成する必要があります。
今回はStaticMeshに貼り付けてみました。
UIで表示したい場合は先程の凛さんのブログが参考になります。
基本的にはマテリアルがSurfaceかUserInterfaceかくらいの違いしかありません。
このマテリアルをStaticMeshに貼り付けただけでは再生されません。
Media Playerの設定を確認してましょう。
確認すべき箇所はDetailsのPlaybackの項目です。
- Play on Open
Open Source等のノードが呼び出された際に自動で再生するか
- Shuffle
Play Listを設定した場合にシャッフル再生を行うか(動作未確認)
- Loop
動画再生終了時にループ再生を行うか
今回はPlay on Openだけチェックが入っていることを確認しましょう。
最後に再生したいタイミングで(今回はレベル開始時)Open Sourceを呼び出します。
Media Playerの変数を作成して、そこに再生したいMedia Sourceを登録するだけです。
もしも、Play on Openにチェックを入れていない場合は下記のようにPlayノードを呼び出します。
しかし、これでは動作しないことがあります。
その場合はDelayを入れるか別のタイミングでPlayを呼び出してみましょう。
Planeに貼り付けてみるとこんな感じになりました!
まとめ
説明が長いせいで複雑な印象を与えてしまったかもしれません。
簡単におさらいします。
①動画インポート
File Media Sourceの設定を変更
②Media Player作成(同時にMedia Textureも作成される)
③Media Textureを使用したMaterial作成
UIの場合はUserInterfaceに変更しておく
④MediaPlayerの変数を作成
⑤OpenSource, Playノードを呼び出す
Media Playerで再生しようとした時にエラーが出た場合は動画の保存場所を疑ってみましょう。
Content/Movies以下に保存する必要があります。
・使用例
VRと組み合わせることで映画館が作れそうですね。
インゲームではPVを流したり、チュートリアルの説明に活かせそうです。
・プラットフォーム対応について
今回は説明が長いため、省略しましたがプラットフォームごとに別の解像度、別のフォーマット、別の動画を再生したい場合
Media/Platform Media Sourceを使用しましょう。
すると、プラットフォームごとのFile Media Sourceの設定が可能になります。