HoloLens可支持视频播放,今天讲解的是HoloLens离线视频播放(内置在HoloLens中的视频或通过WWW下载得到的视频)。
HoloLens所支持的视频格式需依赖于Unity中MovieTexture所支持的视频格式,也就是说可以通过MovieTexture方式来进行播放视频(其他的视频播放插件如 EasyMovieTexture、Vuforia中的视频播放组件、MobileMovie等测试暂不支持HoloLens(UWP)平台)。
MovieTexture所支持的视频格式为.ogv,所以需要将其他格式的视频转换成.ogv格式,这里提供一个较小的转换工具:
链接:http://pan.baidu.com/s/1hsqRHAk 密码:0v8b
使用一个3D Object——Quad作为视频播放组件(Quad只包含4个顶点,两个三角形)
using System.Collections;using System.Collections.Generic;using UnityEngine;/// <summary>/// Made By XXQQ.Bruce/// </summary>public class MovieTest : MonoBehaviour{ public MovieTexture MovieTextureShow; void Start() { GetComponent<MeshRenderer>().material.mainTexture = MovieTextureShow; MovieTextureShow.loop = true; MovieTextureShow.Play(); }}WWW下载并播放:
下载资源:using System;using System.Collections;using System.Collections.Generic;using UnityEngine;/// <summary>/// Load AssetBundle From Server/// </summary>public class LoadAssetBundle : SingleT<LoadAssetBundle>{ public Action<WWW> actionWWW; WWW www; public Action<MovieTexture> actionGetMovieTexture; public Action <AudioClip> actionGetMovieAudioClip; public Action actionMovieLoadOver; public IEnumerator LoadMovie(string movieURL) { www = WWW.LoadFromCacheOrDownload(movieURL, 5); actionWWW(www); yield return www; if (www.error != null) { Debug.Log(www.error); } else { var movieAssetBundle = www.assetBundle; var requestMovieTexture = movieAssetBundle.LoadAllAssets(typeof(MovieTexture))[0]; yield return requestMovieTexture; var movie = requestMovieTexture as MovieTexture; actionGetMovieTexture(movie);//get MovieTexture var requestMusic = movieAssetBundle.LoadAllAssets(typeof(AudioClip))[0]; yield return requestMusic; if (requestMusic != null) { var musicClip = requestMusic as AudioClip; actionGetMovieAudioClip(musicClip);//get AndioClip } } actionMovieLoadOver(); } }播放控制:using System.Collections;using System.Collections.Generic;using UnityEngine;public class MovieControl{ public static void MovieControlFun(GameObject moviePlane, MovieTexture movieTexture, AudioClip audioClip, bool isLoop, bool isAutoPlay) { if (movieTexture != null) { moviePlane.GetComponent<MeshRenderer>().material.mainTexture = movieTexture; if (isLoop) movieTexture.loop = true; else movieTexture.loop = false; if (isAutoPlay) movieTexture.Play(); } if (audioClip == null) return; if (moviePlane.GetComponent<AudioSource>() == null) moviePlane.AddComponent<AudioSource>(); var s = moviePlane.GetComponent<AudioSource>(); s.clip = audioClip; if (isAutoPlay) s.Play(); if (isLoop) s.loop = true; else s.loop = false; }}测试效果:
透明视频:链接:http://pan.baidu.com/s/1i5wpszz 密码:8wdx
普通视频:链接:http://pan.baidu.com/s/1c1RrvHI 密码:gts0
注意:
MovieTexture视频播放,视频和音效是分开的,需要单独播放视频和音效
新闻热点
疑难解答