1. 程式人生 > 其它 >使用AVPro Video在Unity中播放開場視訊(CG)筆記

使用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

遇到問題

視訊播放完後卡住

我是在遊戲啟動入口處,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設定上正確的平臺,重新出包就解決了。