Unity3D中播放視頻的方法


播放視頻其實和貼圖非常相像,因為播放視頻用到的 MovieTexture 屬於貼圖 Texture 的子類。Unity3D 支持的視頻格式有很多,但是還是建議使用 ogv 格式的視頻,使用其他格式依然需要插件轉碼成 ogv 格式,可以省去很多麻煩。

第一種:在游戲對象中播放,就好比在游戲世界中創建一個Plane面對象,攝像機直直的照射在這個面上。在播放對象身上掛如下腳本,並直接將視頻拖入 movieTexture 變量中即可實現播放視頻。

 1 using UnityEngine;
 2 using System.Collections;
 3 
 4 public class Test : MonoBehaviour
 5 {
 6     //電影紋理
 7     public MovieTexture movieTexture;
 8 
 9     private void Start()
10     {
11         //獲取當前對象 MeshRenderer 組件
12         MeshRenderer meshRenderer = this.GetComponent<MeshRenderer>();
13         //設置當前對象的主紋理為電影紋理
14         meshRenderer.material.mainTexture = movieTexture;
15         //播放模式設置為循環播放
16         movieTexture.loop = true;
17         // movieTexture.isPlaying  屬性,是否正在播放
18         if (!movieTexture.isPlaying)
19         {
20             //開始播放
21             movieTexture.Play(); 
22         }
23         //暫停播放
24         //movieTexture.Pause();
25         //停止播放
26         //movieTexture.Stop();
27     }
28 }

 

第二種:在GUI層面上播放視頻。將如下腳本掛在任何一個物體上即可。

 1 using UnityEngine;
 2 using System.Collections;
 3 
 4 public class Test : MonoBehaviour
 5 {
 6     //電影紋理
 7     public MovieTexture movieTexture;
 8 
 9     private void Start()
10     {
11         //播放模式設置為循環播放
12         movieTexture.loop = true;
13     }
14 
15     private void OnGUI()
16     {
17         GUI.DrawTexture(new Rect(0, 0, Screen.width, Screen.height), movieTexture, ScaleMode.StretchToFill);
18         if (GUILayout.Button("播放/繼續"))
19         {
20             if (!movieTexture.isPlaying)
21             {
22                 movieTexture.Play();
23             }
24         }
25         if (GUILayout.Button("暫停播放"))
26         {
27             movieTexture.Pause();
28         }
29         if (GUILayout.Button("停止播放"))
30         {
31             movieTexture.Stop();
32         }
33     }
34 }

注意:以上兩種方式是無法適用於移動端的。需要使用Handheld.PlayFullScreenMovie()方法來播放,而且由於調用的是移動端內嵌的播放器,只能平面播放。也就是說我們無法用曲面來播放全景視頻,在開發VR/AR項目時需要注意。而且將視頻文件放置在Assets/StreamingAssets/路徑下。由於播放器問題,並不是所有視頻格式都可以,目前親測 mp4 格式可以播放。腳本如下:

 1 using UnityEngine;
 2 using System.Collections;
 3 
 4 public class Test : MonoBehaviour
 5 {
 6     private void Start()
 7     {
 8         Handheld.PlayFullScreenMovie("Final.mp4", Color.black, FullScreenMovieControlMode.Full, FullScreenMovieScalingMode.AspectFill);
 9     }
10 }

第一個參數為路徑,第二個參數為背景顏色,不做其他描述。

FullScreenMovieControlMode   視頻全屏控制器。 
    Full                     全部控制部分   包括快進后退  進度條控制等。   播放完后退出
    Minimal              迷你版控制            播放完后退出
    CancelOnInput  點擊后退出    (播放視頻時) 點擊屏幕退出播放
    Hidden               不顯示任何控制     只能全部播放完后才能退出

FullScreenMovieScalingMode  播放視頻時縮放大小適應屏幕
    None         不縮放視頻   按原比例播放
    AspectFit  縮放電影直到完全適應屏幕比例 (不會改變視頻寬高比比例)
    AspectFill  縮放電影直到完全鋪滿屏幕   (會改變視頻寬高比例)
    Fill            鋪滿屏幕

第三種:從Unity3D 5.6版本開始,Unity3D就自帶 VideoPlayer 組件,具體的使用方法還有待研究,是否支持移動端還需要測試,反正我是還沒用過 。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM