本日は HoloLens の技術調査枠です。
HoloLensアプリでVideoPlayerを使って動的に動画ファイルを読み込んで再生してみます。
VideoPlayer
Unity のシーン上で動画を再生する場合、VideoPlayer コンポーネントを利用します。
docs.unity3d.com
docs.unity3d.com
サンプルプロジェクトの作成
動画を再生するシーンを作成します。
以下の記事に従って MRTK をインポートしたサンプルプロジェクトを作成します。
bluebirdofoz.hatenablog.com
VideoPlayer コンポーネントを追加するための Panel オブジェクトを追加します。
[Add Component]ボタンで Panel オブジェクトに[Video Player]コンポーネントを追加します。
Video Player へ動的に動画ファイルを設定する以下のスクリプトを作成しました。
・VideoPlayerTest.cs
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Video; // 必須コンポーネントの指定 [RequireComponent(typeof(VideoPlayer))] public class VideoPlayerTest : MonoBehaviour { /// <summary> /// 起動処理 /// </summary> void Start() { // VideoPlayerの参照を取得する VideoPlayer videoPlayer = this.gameObject.GetComponent<VideoPlayer>(); // 自動再生OFF videoPlayer.playOnAwake = false; // ループON videoPlayer.isLooping = true; // 指定ディレクトリ配下の HoloMonLife.mp4 を再生する string filename = string.Format(@"HoloMonLife.mp4"); string filePath = System.IO.Path.Combine(VideoFileDirectoryPath(), filename); // パスを指定する videoPlayer.url = filePath; // 動画を再生する videoPlayer.Play(); } /// <summary> /// 定期処理 /// </summary> void Update() { } /// <summary> /// ビデオ保存ディレクトリパスの取得 /// 実行環境によって参照ディレクトリを変更する /// </summary> static private string VideoFileDirectoryPath() { string directorypath = ""; #if WINDOWS_UWP // HoloLens上での動作の場合、LocalAppData/AppName/LocalStateフォルダを参照する directorypath = Windows.Storage.ApplicationData.Current.LocalFolder.Path; #else // Unity上での動作の場合、Assets/StreamingAssetsフォルダを参照する directorypath = UnityEngine.Application.streamingAssetsPath; #endif return directorypath; } }
作成したスクリプトを Panel オブジェクトに追加します。
エディター上での動作確認
エディター上で動作確認を行います。
Assets/StreamingAssets フォルダに参照する動画ファイルを配置します。
シーンを再生すると Panel オブジェクトに動画が再生されます。
HoloLens2上での動作確認
次に HoloLens2 上での動作確認を行います。
HoloLens2 ではアプリの LocalState フォルダを参照するように設定しているので、ここに動画ファイルを配置します。
アプリを起動して、動画が再生されれば成功です。