動画の再生


投稿日:2017年4月20日 | 最終更新日:2024年5月15日

動画の再生にはVideoコマンドを使用します。

サンプル

リファレンス

Command 説明 Arg1 Arg2 Arg3 Arg4 Arg5 Arg6
Video 動画を再生する 動画ファイル名
DLする場合は拡張子も
動画を表示するカメラ名(UICameraなど) ループのTRUE/FALSE
空欄の場合FALSE
クリックによるムービースキップが可能かのTRUE/FALSE。
空欄の場合TRUE

動画ファイルの置き方

Resouces/プロジェクト名/Videoフォルダ以下に置いてください。
(Videoフォルダがない場合は作成してください)

また、Unityの透過付きの動画については、出力フォーマットに制限があります。詳しくはこちらなどが参考になるかと。

ビデオオブジェクトとの違い

ビデオオブジェクト機能でも動画表示が可能です。
ビデオオブジェクトは他のオブジェクトと一緒に表示できる反面、メモリ負荷が高いです。
単純な全画面ムービーの場合は、こちらのVideoコマンドを使いましょう。

UnityのVideoPlayerに関しての諸注意

Unityの動画再生は情報がなかなかまとまっていないため、特定の環境や条件で動かなくなる可能性があります。
詳しくは以下にまとめました(新しく問題が発生した場合はなるべく追記していきます)

音声の再生

音声の再生はUnity2018.2、宴3.4.7以上が必須になります。
それ以前のバージョンのUnityでは、VideoClip自体が音のインポートに対応していません。
それ以前のバージョンでは、BGMコマンドなどと併用して下さい。

WebGLは非対応

UnityのWebGLでは通常の動画再生をサポートしていないようなので、WebGLでの動画再生はできません。

UnityのドキュメントにはWebGLでのVideo再生についての記述がなく、サポートフォーラムなどで非対応と言われているだけなので、確かなことが分かりません。
https://forum.unity.com/threads/unity-5-6-0b4-issues-with-video-player-in-webgl.452092/

VideoClipを使わずに、別途用意した動画ファイルのURLを直接指定すれば再生可能という情報もあるのですが、
https://forum.unity.com/threads/getting-webgl-to-play-videos.575947/
再生する環境(ブラウザやOS)やセキュリティの設定、ファイルフォーマットの互換性などで再生できなくなるという情報もあり、どうすればいいのかはっきりしません。
https://forum.unity.com/threads/unity-video-player-not-working-in-chrome-webgl.629926/

Unity公式のドキュメントに正しいやり方の記述がないため、宴では非対応させていただきます。
Unity公式の記述でWebGLでも安定して再生可能だというやり方やを知っている人がいましたら、Q&Aなどにご連絡いただければと思います。

Unityの不具合について

Unityのバージョンやプラットフォームによるバグのまとめです。
最新のUnityでは解消されている可能性もあります。
情報共有のため宴側で把握した情報を追記していきますが、基本的には宴で対応できることではないので、不具合についてや仕様の確認などはUnity公式に問い合わせてください。

Androidでは圧縮したAssetBundleの場合VideoClipを再生できない

これは当初不具合かと思われていたのですが、Unityのスクリプトリファレンスに追記されているバージョンもありますので、
どうもUnityのバージョンによっては仕様のようです。
https://docs.unity3d.com/ScriptReference/Video.VideoPlayer.html
宴では、この問題の応急処置として、VideoのみResourcesからロードする仕組みを用意しました。
Utage\Scripts\ADV\Extra\AdvVideoLoadPathChanger.csを使うことで、ビデオファイルのロードパスなどを強制的に変更する処理を追加します。
以下のように、FileMangerにCustomLoadManagerとAdvVideoLoadPathChangerをAddComponentして
AdvVideoLoadPathChangerのRootPathに、ビデオをロードするResouces以下からの相対ディレクトリを設定してください。

AndroidではAdressableAssetSystemを使うとVideoClipを再生できない

これも、上記の「Androidでは圧縮したAssetBundleの場合VideoClipを再生できない」という仕様が原因のようです。
そのため、バグ報告へのUnity公式の対応としては「仕様」となっていて「動かないのが現在の仕様」という状況のようです。(対策はこれから考えるらしいです)
https://forum.unity.com/threads/how-to-play-video-from-adressable-assetbundle-on-android.685261/
https://issuetracker.unity3d.com/issues/android-loading-videos-from-assetbundles-fails-unless-its-uncompressed-and-loaded-from-file
https://forum.unity.com/threads/addressable-videos-not-working-on-android.588832/
宴で対応するには、UtageForAddressableCustomFileManager.csをさらに書き換えて、AndroidでVideoの場合のみ、Resourcesからロードする形にする必要があります。
もしこの対応が必要があればQ&Aにご連絡ください。
ただ、Unity側で対応する予定ではあるようなので、それを待ったほうが良いかもしれません。