• 使用AVPro Video在Unity中播放开场视频(CG)笔记


    游戏需要添加开场CG,调研在Unity中播放视频,采用的插件为AVPro Video,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

    导出工程,2018.4不需要做其它处理,按Unity导出即可

    StreamingAssets 下不能读取过大的文件,建议把大视频放在可读取写目录

    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时的自动添加引用,如果没有的话,则需要手动处理

    其它资料

    建议阅读官方文档后,再阅读第三方文章

    参考资料:Unity AVPro Video插件使用封装

    Unity引擎自带播放视频组件

    Unity自带一个Video Player,文档:https://docs.unity.cn/cn/2019.4/Manual/class-VideoPlayer.html

    但是很多用过的朋友,都发现这个组件有坑,比如在uwa上的这个贴子:华为p30视频播放异常

    遇到问题

    视频播放完后卡住

    我是在游戏启动入口处,gameObject绑定的第一个脚本Awake函数中调用AVPro 播放视频的,在视频播放结束后,不会退出视频回到Unity,会停在视频的最后一帧。

    从日志来看,安卓层的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中的第一行代码

    Line 8931: 06-23 10:12:53.254 I/Unity ( 2278): [Info] 10:12:53'212 游戏第一次启动,播放cg

    解决办法:

    自己在update中计算视频是否播放完成(提前100ms调用视频播放结束),以防插件出现问题不会回调播放完成事件

    注意:手动调用StopVideo之后,才会触发Finish事件,我目前是没有等视频自己播放完,而是自己根据时间判断视频有没有播放完来调用完成事件。

    安卓11播放失败

    安卓11上调用播放视频遇到这个错误,但mumu模拟器上正常,视频是存在的。

    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失败。

    解决办法就是把这几个so设置上正确的平台,重新出包就解决了。

  • 相关阅读:
    linux 进程
    VFS dup ,dup2
    文件操作 之 各类函数
    文件系统之 stat与access
    xml文件
    Java学习笔记42(数据库连接池 druid连接池)
    java学习笔记41(数据库连接池 C3p0连接池)
    java学习笔记39(sql事物)
    java学习笔记38(sql注入攻击及解决方法)
    java学习笔记37(sql工具类:JDBCUtils)
  • 原文地址:https://www.cnblogs.com/zhaoqingqing/p/14964826.html
Copyright © 2020-2023  润新知