游戏中的开场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)笔记的更多相关文章

  1. unity中播放视频

    unity中播放视频步骤如下: 1.将要播放的视频拖入projec.(注意:unity一般支持的视频格式有mov, .mpg, .mpeg, .mp4,.avi, .asf格式  ) 2.在场景中添加 ...

  2. Unity中播放带有alpha通道格式为Mp4的视频

    问题: Unity中实现播放透明的MP4视频时出现黑点 解决办法:    使用Unity自带的shader去除黑点 1:shader代码如下所示 Shader "Unlit/NewUnlit ...

  3. [转] Android 4.4中播放HTML5视频<video>的Bug

    近期Nexus 4手机自动升级到Android4.4,本来挺好的一件事儿,结果发现自己的应用中出现一个Bug,应用中使用了Webview播放HTML5视频,代码如下: <video width= ...

  4. 【转】Android 4.4中播放HTML5视频<video>的Bug

    近期Nexus 4手机自动升级到Android4.4,本来挺好的一件事儿,结果发现自己的应用中出现一个Bug,应用中使用了Webview播放HTML5视频,代码如下: <video width= ...

  5. 如何在Unity中播放影片

    Unity支援影片貼圖,也就是說可以匯入影片並附加到遊戲物件上,基本上您電腦上的Quick Time播放器能播的,大致上都能播,已知的支援的影片格式有下列幾種:.mov, .mpg, .mpeg, . ...

  6. 在游戏中播放cg视频遇到的问题

    遇到问题 我们线上手游要给港澳台用户增加cg视频,在我之前文章中已经讲到了我们是怎么在unity中播放cg的--><使用AVPro Video在Unity中播放开场视频(CG)笔记> ...

  7. unity 播放外部视频

    摘要: Unity支持的播放视频格式有.mov..mpg..mpeg..mp4..avi和.asf.只需将对应的视频文件拖拽入Project视图即可,它会自动生成对应的MovieTexture对象. ...

  8. 【转】Unity3D研究院之两种方式播放游戏视频

    http://www.xuanyusong.com/archives/1019   Unity3D中播放游戏视频的方式有两种,第一种是在游戏对象中播放,就好比在游戏世界中创建一个Plane面对象,摄像 ...

  9. 微信 vue中使用video.js播放m3u8视频,解决安卓自动全屏的问题。

    最近一个项目中需要在微信中播放m3u8格式的视频,刚开始用了 vue-video-player 这个插件,在IOS手机体验良好,本以为完事了, 结果安卓手机一点播放就自动全屏,心态略崩.查了资料说是安 ...

随机推荐

  1. 1、mysql基础入门(2)

    1.4.常用非关系型数据库产品介绍: 1.Memcached(key-value)数据库:

  2. Kotlin Coroutine(协程): 二、初识协程

    @ 目录 前言 一.初识协程 1.runBlocking: 阻塞协程 2.launch: 创建协程 3.Job 4.coroutineScope 5.协程取消 6.协程超时 7.async 并行任务 ...

  3. 管理员的基本防范措施 Linux系统安全及应用

    系统安全及应用一.账号安全基本措施① 系统账号清理② 密码安全控制③ 命令历史限制④ 终端自动注销二.SU命令切换用户① 用途及用法② 验证密码③ 限制使用su命令的用户④ 查看su操作记录补充三.L ...

  4. SLAM的数学基础(4):先验概率、后验概率、贝叶斯准则

    假设有事件A和事件B,可以同时发生但不是完全同时发生,如以下韦恩图所示: 其中,A∩B表示A和B的并集,即A和B同时发生的概率. 如此,我们很容易得出,在事件B发生的情况下,事件A发生的概率为: 这个 ...

  5. AgileTC linux部署

    简介 AgileTC是一套敏捷的测试用例管理平台,支持测试用例管理.执行计划管理.进度计算.多人实时协同等能力,方便测试人员对用例进行管理和沉淀.产品以脑图方式编辑可快速上手,用例关联需求形成流程闭环 ...

  6. vue2.x移动端ui框架选型

    前言 最近公司准备做移动端spa项目,需要选一个ui框架.优先考虑谷歌Material Design设计风格.针对市面上的框架进行了一次调研,简单总结如下. 选型原则:1. 优先考虑md风格. 2. ...

  7. python编程面试题

    # 实现需求为 注册.登录.查看昵称的功能 # def userN(): #     username = input("请输入账号: \n") #     password =  ...

  8. 【开发工具】-- IDEA集成Git在实际项目中的运用

    1.企业实际项目中Git的使用 在实际的企业项目开发中,我们一般Java的项目在公司都有自己的局域网代码仓库,仓库上存放着很多的项目.以我工作过的公司如华为的项目,一般是存放在企业内部的CodeHub ...

  9. P4169-CDQ分治/K-D tree(三维偏序)-天使玩偶

    P4169-CDQ分治/K-D tree(三维偏序)-天使玩偶 这是一篇两种做法都有的题解 题外话 我写吐了-- 本着不看题解的原则,没写(不会)K-D tree,就写了个cdq分治的做法.下面是我的 ...

  10. 期望长度P1365,CF235B,P1654

    期望长度 定义 这里期望长度表示一段序列连续长度的期望.具体来说,对于一段序列,每个点都有一个概率连续和断开.求所有连续序列和的期望. 当然,对于以上期望长度的定义,我们只需要求出每个点存在的期望的和 ...