关于VideoPlayer以及使用VUforia播放视频的见解
来源:互联网 发布:比较编程语言书籍 编辑:程序博客网 时间:2024/04/29 15:57
Unity5.6.x以后新增了VideoPlayer,可以直接覆盖物体的Material播放视频,相比于以前的MovieTexture方便了很多。下边介绍一下VideoPlayer的一些属性。
- Source 可以选择两种资源模式,一种就是本地导入的视频片段,另一种就是URL资源。
- PlayOnAwake是否在激活脚本的时候播放。
- WaitForFirstFrame 是否等待第一帧,也就是是不是等一帧再播放视频。
- Loop 循环播放。
- PlaybackSpeed 播放速度。
- RenderMode 这里是渲染模式总共有五种,分别是:
- MaterialOverride:通过重载Material来播放视频;
- CameraFarPlane:视频渲染在相机的最远端;
- CameraNearPlane:视频渲染在相机的最近端;
- RendererTexture:用于MovieTexture;
- APIOnly:——–
这里值得注意的是AudioOutputMode:
- AudioSource:从AudioSource播放音频,只需要把AudioSource拖进来就可以了,我昨天做一个Demo的时候无法播放声音,最后用了Premiere把视频声音剥离出来以后才播放成功。其实这里不用,只需要创建一个AudioSource然后放在这里就可以了。
- None:就是不播放声音咯。
- Direct:使用这个测试,但是没有声音,还需要测试。
之后就是比较有技术含量的了。如何在Vuforia中通过追踪来实现是否播放视频呢?
首先,Vuforia控制追踪物体的脚本叫做:DefaultTrackableEventHandler。这里边有两个方法,分别叫做:OnTrackingFound()、OnTrackingLost()。这两个方法在 OnTrackableStateChanged()这个方法中调用。 public void OnTrackableStateChanged(
TrackableBehaviour.Status previousStatus,
TrackableBehaviour.Status newStatus)
{
if (newStatus == TrackableBehaviour.Status.DETECTED ||
newStatus == TrackableBehaviour.Status.TRACKED ||
newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED)
{
OnTrackingFound();
}
else
{
OnTrackingLost();
}
}
所以我们需要在追踪到和失去追踪的时候搞点事情,就要在OnTrackingFound()、OnTrackingLost()这两个方法里做了。我们需要在状态改变调用这两个方法的时候告诉我们,就需要有事件能够通知到订阅者,所以我们在这个类里边定义了两个事件:
public static event Action<bool> Event_OnTrackingFound;public static event Action<bool> Event_OnTrackingLost;
因为要判断是否播放,所以参数应该是bool类型,现在我们需要在TrackingFound和Lost的时候告诉事件的订阅者。
if (Event_OnTrackingFound != null) { Event_OnTrackingFound(false); }
此时,我们就需要用拿到的参数来决定视频是否播放啦。我们需要一个新的类:VideoPlayerController因为DefaultTrackableEventHandler这个类在Vuforia的名空间下,所以在VideoPlayer中需要引用Vuforia的名空间。下边附上VideoPlayerController的代码片供大家参考。
using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.Video;using System;using Vuforia;public class VideoPlayerController : MonoBehaviour { private VideoPlayer videoPlayer; void Awake() { videoPlayer = this.GetComponent<VideoPlayer>(); DefaultTrackableEventHandler.Event_OnTrackingFound += HanleTrackFound; DefaultTrackableEventHandler.Event_OnTrackingLost += HanleTranckLost; } void Start() { } private void HanleTrackFound(bool isFound) { if (isFound) { videoPlayer.Play(); } else { videoPlayer.Pause(); } } private void HanleTranckLost(bool isLost) { if (isLost) { videoPlayer.Pause(); } } void OnDestroy() { DefaultTrackableEventHandler.Event_OnTrackingFound -= HanleTrackFound; DefaultTrackableEventHandler.Event_OnTrackingLost -= HanleTranckLost; }}
这样就实现了,使用Vuforia在扫描到识别物的时候播放视频,丢失识别物的时候暂停的效果。
- 关于VideoPlayer以及使用VUforia播放视频的见解
- cocos2dx 3.15 视频播放实现 lua 以及c++ 版本VideoPlayer的使用注意 与详细示例
- 关于Unity3D VideoPlayer播放视频中的声音的问题
- cocos2dx 3.3 视频播放的实现-VideoPlayer的使用
- cocos2dx3.3视频播放的实现VideoPlayer的使用
- cocos2dx3.3视频播放的实现VideoPlayer的使用
- cocos2dx 视频播放——VideoPlayer的使用
- unity5.6新功能VideoPlayer播放声音,判断视频播放完毕,以及遇到的坑总结
- videoPlayer 无法播放视频
- unity5.6.0新版本使用videoplayer发布后视频不能播放
- 视频播放--MovieTexture和VideoPlayer
- Android | Vuforia 播放视频
- Quick-Cocos2dx 中, 使用ccexp.VideoPlayer播放视频, 响应用户点击结束播放
- cocos2d-x播放视频(VideoPlayer)小记
- Cocos2d-3.2 VideoPlayer 视频播放梳理01
- Cocos2d-3.2 VideoPlayer 视频播放梳理02
- Unity VideoPlayer的使用
- unity VideoPlayer的使用
- solr--创建核心core
- View measure
- java内存管理
- Hadoop HDFS环境搭建
- 抠图技巧
- 关于VideoPlayer以及使用VUforia播放视频的见解
- 卸载Centos自带的JDK
- sql2java:一次外科手术式的bug修复过程
- 文件名过长/文件夹路径过长,无法删除文件夹/文件的解决办法
- 【iOS】第01讲 UIView/UIViewController/UIApplication详解
- spine介绍和在Unity里面的应用
- Python study
- apt-get install curl 无法获得锁 /var/lib/dpkg/lock
- Hibernate4生命周期和Session核心方法