草庐IT

Unity 视频播放器,基于VideoPlayer,实现滑动进度条,显示视频时长,全屏显示,音量调节

JacobKay 2023-04-05 原文

unity播放视频的方式有很多种,但即轻量又好用的,还是unity自带的VideoPlayer,但没有视频基础操作的UI组件,本篇带大家对视频的播放,以及UI组件的实现

效果展示:

Unity视频播放

 DEMO下载:https://gitee.com/jacobkay/videoplayer

一、安装方式

1、下载文件

2、将文件拖入工程中

3、将"ZVideoPlayer/Prefabs/VideoPlayer"预制体拖入到场景中的canvas中即可

二、API说明方式

  1. IsVideoPlaying:获取当前播放状态
  2. PlayTime:获取和设置播放时间,单位秒
  3. FullScreen:设置全屏状态
  4. VideoUrl: 设置视频url
  5. VideoVolum: 设置视频音量
  6. VideoClip:设置视频clip
  7. Play():播放视频
  8. Pause(): 暂停视频
  9. Stop():停止视频

三、配置

 触屏模式打开后,会取消鼠标移入和移出的判断,由点击控制面板的显示也隐藏,视频中央会增加一个大的容易点击的播放按钮,易于点击

 如果播放器的适配模式为自适应,则需要将自适应模式打开,否则运行会报错

请注意:此方法暂时功能不完全,选择自适应模式后,点击全屏,会适配父对象的尺寸,所以目前只支持,父对象是全屏的情况下,点击全屏后才会全屏

如有任何问题,烦请打开demo文件夹中的help文件

如果只需要完成视频的播放,不需要有UI控制面板,则请按照下方的步骤完成即可

一、视频支持格式

Unity常用视频格式:mov、mpg、mpeg、mp4、avi、asf

二、创建UI

1、Hierarchy中新建VideoPlayer组件

2、Hierarchy中创建RAWImage

3、在Assets中新建RenderTexture纹理

 

 4、设置好视频的分辨率

 5、将建好的纹理拖到第2步中新建的RawImage上

6、 将建好的纹理拖到第1步中新建的VideoPlayer的TargetTexture上

 

 第5步和第6步的目的是,使VideoPlayer中的视频图像导出到纹理文件中,然后通过RAWImage显示纹理获取到的图像,达到将视频进行播放的效果

 7、将VideoPlayer的AudioOutputMode改成AudioSource,然后在下方挂在AudioSource组件,并赋给AudioSource上

 至此,视频即可正常播放

三、VideoPlayer常用的属性及方法

1、属性:
Source:视频来源   
        - Video Clip:放入下载好的视频   
        - URL:可以放入网上下载好的视频链接/下载好的视频的存储路径【没试过】
Play On Awake:脚本载入时自动播放
Wait For First Frame:决定是否在第一帧加载完成后才播放,只有在Play On Awake被勾选是才有效
Loop:循环
Playback Speed:播放速度
RenderMode:渲染模式   
        - Camera Far Plane:摄像机的远平面上,用于背景播放器   
        - Camera Near Plane:摄像机的近平面上,用作前景播放器   
        - Render Texture:画面保存在Render Texture上,用来UGUI的播放器   
        - Material Override:视频画面复制给所选Render的Material。需要选择具有Render组件的物体,可以选择赋值的材质属性。可制作360全景视频和VR视频。
Aspect Ratio:自适应分辨率的方式
Audio Output Mode:音频输出方式   
        - Audio Source:音频样本发送到选定音频源,允许应用 Unity 的音频处理。  
        - Direct:音频样本绕过 Unity 的音频处理,直接发送到音频输出硬件。
2、事件:
errorReceived: 错误监听到时被执行
frameDropped :有丢帧发生时被执行
frameReady :新的一帧准备好时被执行
loopPointReached :播放结束或播放到循环的点时被执行
prepareCompleted :视频准备完成时被执行
seekCompleted :查询帧操作完成时被执行
started:在Play方法调用之后立刻调用

有关Unity 视频播放器,基于VideoPlayer,实现滑动进度条,显示视频时长,全屏显示,音量调节的更多相关文章

  1. ruby-on-rails - Rails 编辑表单不显示嵌套项 - 2

    我得到了一个包含嵌套链接的表单。编辑时链接字段为空的问题。这是我的表格:Editingkategori{:action=>'update',:id=>@konkurrancer.id})do|f|%>'Trackingurl',:style=>'width:500;'%>'Editkonkurrence'%>|我的konkurrencer模型:has_one:link我的链接模型:classLink我的konkurrancer编辑操作:defedit@konkurrancer=Konkurrancer.find(params[:id])@konkurrancer.link_attrib

  2. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  3. ruby-on-rails - 使用 Sublime Text 3 突出显示 HTML 背景语法中的 ERB? - 2

    所以我在关注Railscast,我注意到在html.erb文件中,ruby代码有一个微弱的背景高亮效果,以区别于其他代码HTML文档。我知道Ryan使用TextMate。我正在使用SublimeText3。我怎样才能达到同样的效果?谢谢! 最佳答案 为SublimeText安装ERB包。假设您安装了SublimeText包管理器*,只需点击cmd+shift+P即可获得命令菜单,然后键入installpackage并选择PackageControl:InstallPackage获取包管理器菜单。在该菜单中,键入ERB并在看到包时选择

  4. ruby-on-rails - link_to 不显示任何 rails - 2

    我试图在索引页中创建一个超链接,但它没有显示,也没有给出任何错误。这是我的index.html.erb代码。ListingarticlesTitleTextssss我检查了我的路线,我认为它们也没有问题。PrefixVerbURIPatternController#Actionwelcome_indexGET/welcome/index(.:format)welcome#indexarticlesGET/articles(.:format)articles#indexPOST/articles(.:format)articles#createnew_articleGET/article

  5. ruby-on-rails - 如何在 Rails View 上显示错误消息? - 2

    我是rails的新手,想在form字段上应用验证。myviewsnew.html.erb.....模拟.rbclassSimulation{:in=>1..25,:message=>'Therowmustbebetween1and25'}end模拟Controller.rbclassSimulationsController我想检查模型类中row字段的整数范围,如果不在范围内则返回错误信息。我可以检查上面代码的范围,但无法返回错误消息提前致谢 最佳答案 关键是您使用的是模型表单,一种显示ActiveRecord模型实例属性的表单。c

  6. ruby-on-rails - 复数 for fields_for has_many 关联未显示在 View 中 - 2

    目前,Itembelongs_toCompany和has_manyItemVariants。我正在尝试使用嵌套的fields_for通过Item表单添加ItemVariant字段,但是使用:item_variants不显示该表单。只有当我使用单数时才会显示。我检查了我的关联,它们似乎是正确的,这可能与嵌套在公司下的项目有关,还是我遗漏了其他东西?提前致谢。注意:下面的代码片段中省略了不相关的代码。编辑:不知道这是否相关,但我正在使用CanCan进行身份验证。routes.rbresources:companiesdoresources:itemsenditem.rbclassItemi

  7. 叮咚买菜基于 Apache Doris 统一 OLAP 引擎的应用实践 - 2

    导读:随着叮咚买菜业务的发展,不同的业务场景对数据分析提出了不同的需求,他们希望引入一款实时OLAP数据库,构建一个灵活的多维实时查询和分析的平台,统一数据的接入和查询方案,解决各业务线对数据高效实时查询和精细化运营的需求。经过调研选型,最终引入ApacheDoris作为最终的OLAP分析引擎,Doris作为核心的OLAP引擎支持复杂地分析操作、提供多维的数据视图,在叮咚买菜数十个业务场景中广泛应用。作者|叮咚买菜资深数据工程师韩青叮咚买菜创立于2017年5月,是一家专注美好食物的创业公司。叮咚买菜专注吃的事业,为满足更多人“想吃什么”而努力,通过美好食材的供应、美好滋味的开发以及美食品牌的孵

  8. Unity 热更新技术 | (三) Lua语言基本介绍及下载安装 - 2

    ?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------

  9. FOHEART H1数据手套驱动Optitrack光学动捕双手运动(Unity3D) - 2

    本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01  客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02  数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit

  10. unity---接入Admob - 2

    目录1.AdmobSDK下载地址2.将下载好的unityPackagesdk导入到unity里​编辑 3.解析依赖到项目中

随机推荐