Hololens——视频播放

说明:

HoloLens可支持视频播放,今天讲解的是HoloLens离线视频播放(内置在HoloLens中的视频或通过WWW下载得到的视频)。

视频格式:

HoloLens所支持的视频格式需依赖于Unity中MovieTexture所支持的视频格式,也就是说可以通过MovieTexture方式来进行播放视频(其他的视频播放插件如 EasyMovieTexture、Vuforia中的视频播放组件、MobileMovie等测试暂不支持HoloLens(UWP)平台)。

MovieTexture所支持的视频格式为.ogv,所以需要将其他格式的视频转换成.ogv格式,这里提供一个较小的转换工具:

链接:http://pan.baidu.com/s/1hsqRHAk 密码:0v8b

Unity中处理:

使用一个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视频播放,视频和音效是分开的,需要单独播放视频和音效

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值