使用AVPro Video在Unity中播放开场视频(CG)笔记
游戏中的开场CG(播放视频),采用的插件为AVPro Video1.x(和W的版本一致),Unity版本为2018.4.0f1
Asset Store:AVPro Video - Core Android Edition
官方文档:https://www.renderheads.com/content/docs/AVProVideo/articles/intro.html
AVPro分为多个版本:Core(核心版),Ultra(专业版),企业版。
我了删除部分没有用到的shader,见文档:https://www.renderheads.com/content/docs/AVProVideo/articles/usage-shaders.html
1.x(2020年之前的版本)和2.x(2020.6.15之后)版本对比:https://www.renderheads.com/content/docs/AVProVideo/articles/whatsnew.html
建议视频格式为mp4,在各个平台(安卓/ios/windows/mac)都支持。
在官方文档有提到:在Editor下播放成功并不代码安卓和IOS也成功,需要分别在每个平台测试,从插件源代码来看每个平台都用原生实现的,所以要在对应平台上分别测试。
官方文档解读
这里摘录一下官方文档上每个平台的一些要求和注意事项,然后记录一下我接入过程中的笔记。
Android
Android streaming requires the Internet Access setting (in Player Settings) to be set to “Require”:
This plugin requires a minimum Android API level of 15 when using the MediaPlayer API
For rendering OpenGL ES 2.0 and OpenGL ES 3.0 are supported, and multi-threaded rendering is supported on both
打包过程:Unity2018.4不需要做什么处理,从Unity导出工程即可
StreamingAssets 下不能读取过大的文件,建议把很大的视频放在可读取写目录,以W举例6个视频大小分布在6~18MB之间
IOS
文档:https://www.renderheads.com/content/docs/AVProVideo/articles/platform-ios.html
You need to make sure the AVProVideo.framework is set to Embed & Sign in the Frameworks
插件自带的PostProcessBuild脚本有处理在导出xcode时的自动添加引用,如果没有的话,则需要手动添加AVProVideo.framework的引用。
其它资料
建议阅读官方文档后,再阅读第三方文章,(注意文档要与项目中插件的版本一致),我阅读的一篇文章:Unity AVPro Video插件使用封装
Unity引擎自带的播放视频组件
Unity自带一个Video Player,文档:https://docs.unity.cn/cn/2019.4/Manual/class-VideoPlayer.html
但是很多用过的朋友,都发现这个组件有坑,比如在uwa上的这个贴子:华为p30视频播放异常
遇到问题
视频播放完后卡住
我是在游戏启动入口处,gameObject绑定的第一个脚本Awake函数中调用AVPro 播放视频的,在视频播放结束后,不会退出视频回到Unity,画面是停在视频的最后一帧。
从adb日志来看,安卓层的SDK代码先执行,然后再执行Unity中第一个脚本的Awake逻辑。
安卓MainActivity的入口日志
Line 8793: 06-23 10:12:49.200 I/MainActivity( 2278): MainActivity.onCreate
Line 8813: 06-23 10:12:49.216 I/MainActivity( 2278): sdkInstance
Line 8879: 06-23 10:12:50.204 I/ActivityManager( 654): Displayed com.xxx.xxx/xxx.MainActivity: +1s847ms
安卓层发事件给Unity引擎
Line 8857: 06-23 10:12:49.814 I/System.out( 2278): setResultCallback1
Unity上层C#中第一行代码日志
Line 8931: 06-23 10:12:53.254 I/Unity ( 2278): [Info] 10:12:53'212 游戏第一次启动,播放cg
解决办法:
自己在update中计算视频是否播放完成(提前100ms调用视频播放结束),以防插件出现问题不会回调播放完成事件
踩坑记录:手动调用StopVideo之后,插件内部才会触发Finish事件,我目前不依赖插件内部的播放完成,而是计算播放时间视频播放完就调用StopVideo。
安卓11播放失败
安卓11上调用播放视频遇到这个错误,但mumu模拟器上正常,且视频和so都是存在的。
Error:java.lang.UnsatisfiedLinkError: dlopen failed: library "libAVProLocal.so" not found
查看这个贴子:https://github.com/RenderHeads/UnityPlugin-AVProVideo/issues/81
就是Plugins/Android/arm64-v8a/*.so,在插件导入后没有设置平台,在导出的AndroidStuio工程中就不包含这几个so,所以在64位的安卓上调用so失败。
解决办法:
在Unity中把出错的这几个so设置正确的平台,平台选择Android,CPU选择ARM64,然后重新出包就解决了。
使用AVPro Video在Unity中播放开场视频(CG)笔记的更多相关文章
- unity中播放视频
unity中播放视频步骤如下: 1.将要播放的视频拖入projec.(注意:unity一般支持的视频格式有mov, .mpg, .mpeg, .mp4,.avi, .asf格式 ) 2.在场景中添加 ...
- Unity中播放带有alpha通道格式为Mp4的视频
问题: Unity中实现播放透明的MP4视频时出现黑点 解决办法: 使用Unity自带的shader去除黑点 1:shader代码如下所示 Shader "Unlit/NewUnlit ...
- [转] Android 4.4中播放HTML5视频<video>的Bug
近期Nexus 4手机自动升级到Android4.4,本来挺好的一件事儿,结果发现自己的应用中出现一个Bug,应用中使用了Webview播放HTML5视频,代码如下: <video width= ...
- 【转】Android 4.4中播放HTML5视频<video>的Bug
近期Nexus 4手机自动升级到Android4.4,本来挺好的一件事儿,结果发现自己的应用中出现一个Bug,应用中使用了Webview播放HTML5视频,代码如下: <video width= ...
- 如何在Unity中播放影片
Unity支援影片貼圖,也就是說可以匯入影片並附加到遊戲物件上,基本上您電腦上的Quick Time播放器能播的,大致上都能播,已知的支援的影片格式有下列幾種:.mov, .mpg, .mpeg, . ...
- 在游戏中播放cg视频遇到的问题
遇到问题 我们线上手游要给港澳台用户增加cg视频,在我之前文章中已经讲到了我们是怎么在unity中播放cg的--><使用AVPro Video在Unity中播放开场视频(CG)笔记> ...
- unity 播放外部视频
摘要: Unity支持的播放视频格式有.mov..mpg..mpeg..mp4..avi和.asf.只需将对应的视频文件拖拽入Project视图即可,它会自动生成对应的MovieTexture对象. ...
- 【转】Unity3D研究院之两种方式播放游戏视频
http://www.xuanyusong.com/archives/1019 Unity3D中播放游戏视频的方式有两种,第一种是在游戏对象中播放,就好比在游戏世界中创建一个Plane面对象,摄像 ...
- 微信 vue中使用video.js播放m3u8视频,解决安卓自动全屏的问题。
最近一个项目中需要在微信中播放m3u8格式的视频,刚开始用了 vue-video-player 这个插件,在IOS手机体验良好,本以为完事了, 结果安卓手机一点播放就自动全屏,心态略崩.查了资料说是安 ...
随机推荐
- 31、服务器磁盘、内存、cpu使用率监控
31.1.监控磁盘: #!/bin/sh diskspace="`df -hT`" IFS="\n" disk_value="80" ech ...
- 数据备份[APIO/CTSC 2007]题解
题目描述 你在一家IT公司为大型写字楼或办公楼的计算机数据做备份. 然而数据备份的工作是枯燥乏味的,因此你想设计一个系统让不同的办公楼彼此之间互相备份,而你则坐在家中尽享计算机游戏的乐趣. 已知办公楼 ...
- liunx驱动之字符设备的注册
上一篇文章学习了如何编写linux驱动,通过能否正常加载模块进行验证是否成功,有做过liunx应用开发的小伙伴都知道驱动会在'/dev'目录下以文件的形式展现出来,所以只是能加载驱动模块不能算是完成驱 ...
- drf-路由和认证
目录 一.路由Routers SimpleRouter DefaultRouter action的使用 二.认证 认证的写法 认证源码分析 认证组件的使用 一.路由Routers 在 Rest Fra ...
- sonarqube 8.9版本配置项目访问权限
soanrqube设置项目权限 admin->项目->要设置的项目 进行项目权限配置 选择权限 权限配置(公开,私有)如果是公司项目建议选择私有 根据项目团队成员的角色需求,进行勾选配置 ...
- Prometheus(一):Web服务环境监控
写在前面 现每个后端的同学的日常都在跟服务(接口)打交道,维护老的比较大单体应用.按业务拆得相对比较细的新服务.无论企业内部用的,面向用户的前端的服务.流量大的有流量小的,有重要的有不那么重要的. 但 ...
- php漏洞 strcmp漏洞
0x01: 背景:strcmp函数,参数是两个字符串,相等返回为零,大于,返回大于零,小于,返回小于零. 0x02: 如果传入的值,不是字符串的话,会报错,同时使得两个字符串直接相等,返回为零. 一般 ...
- 【重学Java】IO流
IO流的UML类图 File类 File类概述和构造方法[应用] File类介绍 它是文件和目录路径名的抽象表示 文件和目录是可以通过File封装成对象的 对于File而言,其封装的并不是一个真正存在 ...
- YAOI Round #3 题解
前言 比赛链接: Div.1 : http://47.110.12.131:9016/contest/7 Div.2 : http://47.110.12.131:9016/contest/8 Div ...
- DNS域名解析四种配置实验 ---Linux DNS域名解析服务
DNS域名解析服务一.BIND域名服务基础1) DNS的定义2)域名结构3)DNS系统的作用① 正向解析:根据域名查找对应的IP地址② 反向解析:根据IP地址查找对应的域名③ DNS系统的分布式数据结 ...