Unity 5.6 から使える VideoPlayer をカメラの正面で再生する方法
こんなコードで再生できます。このサンプルではカメラの最前面にレンダリングされる様に設定していますが最背面や3Dオブジェクト上で再生させる事も可能です。
※サンプルでは WebM ファイルを使っていますが MP4(H.264/AAC) の方がハードウェアアクセラレータ対応の環境では動作が軽いので実際にリリースするものではなるべく MP4 を使いましょう。
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Video; public class FullscreenPlay : MonoBehaviour { VideoPlayer videoPlayer; void Start() { // ローカルファイルを再生 PlayVideo ("Assets/webmtest.webm", false); // Web上のファイルを再生 //PlayVideo ("https://raw.githubusercontent.com/nakamura001/WebMAlphaSample/master/WebM/sample_vp8.webm", true); } void PlayVideo(string url, bool internet) { // ※ Main Camera には VideoPlayer コンポーネントを追加しておく GameObject camera = GameObject.Find("Main Camera"); videoPlayer = camera.AddComponent<VideoPlayer>(); // レンダリング場所はカメラの最前面。動画の手前に3Dオブジェクトなどを表示したい場合は VideoRenderMode.CameraFarPlane を使用 videoPlayer.renderMode = VideoRenderMode.CameraNearPlane; //videoPlayer.targetCameraAlpha = 0.5F; // 動画全体のアルファ値設定 // ファイルパス or URL の指定 videoPlayer.url = url; // 再生開始のフレーム数 //videoPlayer.frame = 100; // ループ設定 videoPlayer.isLooping = true; // ループが行われるタイミングでのイベント。このサンプルでは再生速度を 1/10 にしている videoPlayer.loopPointReached += EndReached; if (internet) { // Web 上からダウンロードする場合には先読みをしておく。 // 先読みしなくてもエラーは発生しません。再生ボタンを押した後にすぐに再生したい場合には先読みを行います Debug.Log ("Prepare"); videoPlayer.prepareCompleted += PrepareCompleted; videoPlayer.Prepare (); } else { Debug.Log ("Play"); videoPlayer.Play(); } } void PrepareCompleted(VideoPlayer vp) { vp.prepareCompleted -= PrepareCompleted; Debug.Log ("Play"); vp.Play(); } void EndReached(VideoPlayer vp) { Debug.Log ("Loop"); vp.playbackSpeed = vp.playbackSpeed / 10.0F; } }
VideoRenderMode ではビデオのレンダリング場所を設定します。 CameraNearPlane 以外にも以下のものが使用可能です。
値 | 説明 |
---|---|
CameraFarPlane | カメラの一番奥(Far Plane)の位置にレンダリング |
CameraNearPlane | カメラの最前面(Near Plane)の位置にレンダリング |
RenderTexture | Render Texture にレンダリング |
MaterialOverride | 現在設定されている Material を上書きしてレンダリング |
APIOnly | 直接画面にはレンダリングせず、プログラム内で Texture プロパティを使いたい時に使用 |
Unity - Scripting API: VideoRenderMode
https://docs.unity3d.com/560/Documentation/ScriptReference/Video.VideoRenderMode.html
今回のサンプルはこちらからダウンロード可能です。 Sample2 のシーンが今回のサンプルです。
nakamura001/Unity-VideoPlayerSample: Unity 5.6から追加された Video Player のサンプル
https://github.com/nakamura001/Unity-VideoPlayerSample
関連情報
Unity - Scripting API: VideoPlayer
https://docs.unity3d.com/560/Documentation/ScriptReference/Video.VideoPlayer.html