EasyAR尝鲜系列教程之视频播放功能代码

EasyAR开发教程第二弹--AR 视频的识别与播放 在EasyAR 开发系列的教程中,我们在前面讲解了如何用EasyAR SDK 来建立开发环境,并实现简单的功能,今天我们讲解用EasyAR SDK 来识别视频的播放。 EasyAR 开发者交流群:605785368 第一步:导入EasyARSDK 将事先下载好的unity 包导入新建的工程中,不知道的小伙伴请看我前面的教程。(到官网下载) 第二步:准备视频资源 准备好你识 阅读详情
这个增强ImageTarget是指在ImageTarget的基础上融入VideoPlayerBehaviour的功能,因为按照官方的示例来考虑,这两部分功能是独立的,博主希望让大家在制作识别图的时候完全忘记区别ImageTarget和VideoTarget,这样我们可以更为专注地制作识别图,因为视频组件就只是设置参数这一件事情,完全可以一次性搞定,所以我们首先来定义一个VideoTargetBaseBehaviour类,一起来看代码:
  
  
  
{
  
    ///  <summary>
  
    /// 视频播放模块
  
    ///  </summary>
  
    private VideoPlayerBehaviour videoPlayer;
  
    ///  <summary>
  
    /// 视频文件路径
  
    ///  </summary>
  
    public string VideoPath;
  
    ///  <summary>
  
    /// 是否自动播放视频
  
    ///  </summary>
  
    public bool VideoEnableAutoPlay = true;
  
    ///  <summary>
  
    /// 是否允许视频循环
  
    ///  </summary>
  
    public bool VideoEnableLoop = true;
  
    ///  <summary>
  
    /// 视频类型
  
    ///  </summary>
  
    public VideoPlayer.VideoType VideoType =  VideoPlayer.VideoType.TransparentSideBySide;
  
    ///  <summary>
  
    /// 视频资源类型
  
    ///  </summary>
  
    public StorageType VideoStorage = StorageType.Assets;
  
    ///  <summary>
  
    /// 视频是否加载
  
    ///  </summary>
  
    private bool isVideoLoaded;
  
    protected override void Start()
  
    {
  
        //在Start方法中加载视频、隐藏模型
  
        base.Start();
  
        LoadVideo();
  
        HideObjects(transform);
  
    }
  
    ///  <summary>
  
    /// 加载视频
  
    ///  </summary>
  
    private void LoadVideo()
  
    {
  
        //创建子物体VideoObject并为其添加视频组件
  
        GameObject  VideoObject = new GameObject("VideoObject");
  
        videoPlayer  = VideoObject.AddComponent<VideoPlayerBehaviour>();
  
        VideoObject.transform.SetParent(transform);
  
        VideoObject.transform.localPosition  = Vector3.zero;
  
        VideoObject.transform.localRotation  = Quaternion.identity;
  
        VideoObject.transform.localScale  = Vector3.one;
  
        //设置视频组件相关参数
  
        videoPlayer.Storage  = VideoStorage;
  
        videoPlayer.Path  = VideoPath;
  
        videoPlayer.EnableAutoPlay  = VideoEnableAutoPlay;
  
        videoPlayer.EnableLoop  = VideoEnableLoop;
  
        videoPlayer.Type  = VideoType;
  
        videoPlayer.VideoReadyEvent+=videoPlayer_VideoReadyEvent;
  
        videoPlayer.VideoReachEndEvent+=videoPlayer_VideoReachEndEvent;
  
        videoPlayer.VideoErrorEvent+=videoPlayer_VideoErrorEvent;
  
        videoPlayer.Open();
  
        videoPlayer.Play();
  
    }
  
    #region  视频组件相关事件定义
  
    public virtual void videoPlayer_VideoErrorEvent(object sender, System.EventArgs e)
  
    {
  
    }
  
    public virtual void videoPlayer_VideoReachEndEvent(object sender, System.EventArgs e)
  
    {
  
    }
  
    public virtual void videoPlayer_VideoReadyEvent(object sender, System.EventArgs e)
  
    {
  
    }
  
    #endregion
  
    ///  <summary>
  
    /// 隐藏模型的方法
  
    ///  </summary>
  
    ///  <param name="trans">要隐藏的Transform</param>
  
    void HideObjects(Transform trans)
  
    {
  
        for (int i = 0; i < trans.childCount; ++i)
  
            HideObjects(trans.GetChild(i));
  
        if (transform != trans)
  
            gameObject.SetActive(false);
  
    }
  
    ///  <summary>
  
    /// 显示模型的方法
  
    ///  </summary>
  
    ///  <param name="trans">要显示的Transform</param>
  
    public void ShowObjects(Transform trans)
  
    {
  
        for (int i = 0; i < trans.childCount; ++i)
  
            ShowObjects(trans.GetChild(i));
  
        if (transform != trans)
  
            gameObject.SetActive(true);
  
    }
  
    ///  <summary>
  
    /// 实现ITargetEventHandler接口中的OnTargetFound方法
  
    ///  </summary>
  
    ///  <param name="target">识别目标</param>
  
    void ITargetEventHandler.OnTargetFound(Target target)
  
    {
  
        if (videoPlayer)
  
        videoPlayer.Play();
  
        ShowObjects(transform);
  
    }
  
    ///  <summary>
  
    /// 实现ITargetEventHandler接口中的OnTargetLost方法
  
    ///  </summary>
  
    ///  <param name="target">识别目标</param>
  
    void ITargetEventHandler.OnTargetLost(Target target)
  
    {
  
        if (videoPlayer)
  
            videoPlayer.Pause();
  
        HideObjects(transform);
  
    }
  
    ///  <summary>
  
    /// 实现ITargetEventHandler接口中的OnTargetLoad方法
  
    ///  </summary>
  
    ///  <param name="target">识别目标</param>
  
    void ITargetEventHandler.OnTargetLoad(Target target, bool status)
  
    {
  
    }
   ///  <summary>
  
    /// 实现ITargetEventHandler接口中的OnTargetUnload方法
  
    ///  </summary>
  
    ///  <param name="target">识别目标</param>
  
    void ITargetEventHandler.OnTargetUnload(Target target, bool status)
  
    {
  
    }
  
}
在这段代码中博主采用了动态创建视频组件的方法,这样我们在制作VideoTarget的时候只需要按照以下步骤即可: 
* 
在Assets/EasyAR/Prefabs目录下找到EasyAR这个预制体,添加EasyARConfig组件,然后填写KEY。
* 
在Assets/EasyAR/Prefabs目录中找到ImageTarget这个预制体,然后使用VideoTargetBaseBehaviour组件替换默认的ImageTargetBehaviour组件。
AR-透明背景视频解决方案 基于AR实践的需求,某些项目会需要用到透明视频。本篇介绍透明视频在AE中的制作方法以及在Kivicube XR制作平台中作为材质贴图的应用。 阅读详情

相关推荐

【EasyAR学习】播放本地视频

Step1:环境搭建1、新建unity项目,将unitypackage包导入到unity3D中,会在Project面板看到如下图所示的文件夹.2、删除Main Camera,并将AR相机-------EasyAR_ImageTracker-1拖入到Hierarchy面板中,并在EasyAR_ImageTracker-1的Insepctor面板填写Key 值(将之前在官网创建的Key复制到这里)。3...

17的博客 2669

EasyAR平面图形跟踪和识别图上显示视频

Planar Image Tracking是用于检测与跟踪日常生活中有纹理的平面物体。所谓“平面”的物体,可以是一本书、一张名片、一幅海报,甚或是一面涂鸦墙这类具有平坦表面的物品或事物。这些物体应当具有丰富且不重复的纹理。为了创建一个Planar Image Tracking实例,你仅需要准备好一张目标物体的设计图,或者是其正视角度的照片。目标物体的Target数据是在Tracker中自动生成的,除了准备上述图片,你不需要进行任何额外的操作或配置。

qq_44718259的博客 1615

EasyAR_实现扫描识别图播放视频

官方案例已经 实现了扫描识别图播放视频 案例包在 Assets --> Samples --> Scenes -->HelloAR_ImageTarget_Video 1.复制案例包中的ImageTarget_argame_video 到自己的项目场景里 2.需要修改ImageTarget_argame_video 里的 Image Tracker 把E...

weixin_42137574的博客 4299

Cocos实例3:VideoPlayer组件使用常见问题集

CocosCreator中视频组件使用常见问题

EricShx 4180

IOS使用EasyAr实现非unity(unity)案例介绍

前言使用EasyAr首先我们需要在 http://www.easyar.cn/ 注册自己的账号,在开发栏创建自己的应用,生成key和自定义Bundle ID ,当然若是在自己的工程添加识别功能的话,只需将 Bundle ID 设置成工程的Bundle Identifier即可。① IOS端EasyAr使用(unity)因为我们想要通过unity来实现识别,那我们自然要先下载工具unity 和样

兰欣的博客 3843

【EasyAR学习】在线播放视频

【接上一篇博客】我们已经知道如何播放本地视频,如果视频很多,打包起来就会很大,那么接下来就探究一下如何播放在线视频,通过网络来加载视频。Step3:在线视频播放1、将ImageTarget预制体拖入到Hierarchy面板中去,并重命名为"URL_Play"。2、新建一个脚本AutoPlay_URL.cs ,脚本内容与上面创建本地视频播放时的SampleImageTargetBehaviour 脚...

17的博客 2194

EasyAR SDK 学习小结

基本内容 官网地址:https://www.easyar.cn/ 当前版本:2.3.0 版本和功能对照: 基本结构: 图片识别度检测工具:https://www.easyar.cn/targetcode.html EasyAR常用的都做成了Prefab了,直接使用即可。 Key需要输入在“Tracker”里 图片识别 图片识别设置 图片识别数量 物体识别 ...

wuyt2008的专栏 1527

EasyAR的第一步

最近学习一下unity3d的EasyAR遇到的疑惑 准备工作 下载选项 教程链接 准备工作 注册一个Easy AR的账号 注册一个Unity 3D的账号 下载选择 起初我一直疑惑,究竟下载Easy AR官网链接的哪一个,毕竟右侧挺多的: 经过反复验证以后,我发现了下载这个????即可(因为这个和教程的工具是一样的) 下载完以后将文件中的uniyuproject直接拖入Unity的Assets中即可 教程链接 自己整理的链接 流星划过天际成为平凡的石头的个人频道 http://

1eonChan的博客 428

EasyAR初探

说明随着智能化技术的火爆,可以预见:AR,VR,人工智能等技术将逐渐成为未来科技发展的潮流!但是这些技术的技术壁垒是相当高的,对于小白来说,难度着实太大,好在已经有一些公司开始提供SDK供用户集成使用。今天要讲的是一个国内相对来说比较成熟的AR SDK产品:EasyAR。目前EasyAR已经更新到2.0,但是可惜的是官网上的开发文档还是不够完善,只能自己慢慢摸索。下面会结合本人集成经验,讲解And

iOSCircleAndCircle的博客 999

EasyAR尝鲜系列教程之视频播放功能的实现

各位朋友大家好,欢迎大家关注我的博客,我是秦元培,我的博客地址是http://qinyuanpei.com。到现在为止,我们对EasyAR中的ImageTarget基本上可以说是驾轻就熟了,因此我们这个系列教程可以说是接近尾声了。博主第一次接触AR这个概念是在大学时候读到一本讲解计算机图形视觉的书籍里,相对VR技术目前华而不实的市场现状,AR技术从实用性和成熟度都能得到较好的保证。可是大家都清楚这些

素履独行 | 元培的个人博客 1万+

全面掌握Android AR开发:基于EasyAR平台的项目指南

EasyAR(Easy Augmented Reality)是一款由中国公司EasyAR开发的增强现实(AR)技术框架。在IT和相关行业中,尤其是对于5年以上的从业人士来说,EasyAR已成为一个深受开发者欢迎的工具,因为它对初学者友好且功能丰富,能够帮助开发者轻松构建AR应用。本章将介绍EasyAR的核心功能和优势,以及如何快速上手这一框架。

weixin_35257663的博客 973

EasyAR4.0使用说明(Unity3D)三----平面图像跟踪扩展:视频播放,涂涂乐

播放视频 平面图像识别以后播放视频也是一种经常被用到的增强现实的表现方式。通常是截取视频第一帧的图片作为识别图片,识别以后播放视频。这样就给人一个图片动起来的错觉。 在场景中设置Main Camera的Clear Flags属性为Solid Color。 将EasyAR/Prefabs/Composites目录下的EasyAR_ImageTracker-1预制件拖到场景中。 将EasyAR...

wuyt2008的专栏 2791

AR实现资源,引用自EasyAR

主要是EasyAR官方的代码,我自己只是简单的增加了几张图去显示出模型,如何增加模型,或者说替换demo中的模型尚未解决

【EasyAR学习】平面追踪、表面跟踪和运动跟踪、稀疏空间地图

Easy平面追踪、表面跟踪和运动跟踪、稀疏空间地图解析与实战

优快云已停更,感兴趣关注https://aaronzijingcai.github.io/ 1万+

EasyAR实现AR红包的关键代码

EasyAR实现AR红包的关键代码

EasyAR sample

Unity EasyAR官方示例

EasyAR 插件使用简介

EasyAR引擎简介EasyAR是好用且免费的增强现实(Augmented Reality)引擎.EasyAR为Unity开发和本地开发提供了大量可直接运行的样例。 这些样例演示了各种target的创建方式和包含流媒体和透明视频在内的视频播放,以及更加高级的实时target创建和AR涂涂乐。EasyAR自问世以来从未停止向前演进,自首个公开发布版本以来的主要更新内容如下,增加更多完整实例 增加多

陈言必行 -- Unity游戏开发领域优质博主 4576

TSMaster MBD模块实战:如何用Simulink模型快速搭建汽车电子测试环境

本文实战演示了如何利用TSMaster的MBD模块,将Simulink模型快速部署为汽车电子自动化测试环境的核心。通过建立模型与TSMaster系统变量的实时数据通道,并利用数据仓库统一数据定义,工程师能无缝连接算法仿真与真实总线网络,显著提升从模型到HIL测试的验证效率。

php55的博客 207
上一篇: Vuforia 暂停摄像机 暂停云识别
下一篇: iOS解决两个静态库的冲突
卯月廿六
博客等级 码龄12年 25粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值