Unity VideoPlayer以url方式播放视频

2021-02-19  本文已影响0人  不正经的搬砖工

Unity提供了VideoPlayer组件用来播放视频,VideoPlayer加载视频的方式有两种,Videoclip和URL方式。我计划把视频资源放在StreamingAssets目录下使用,一开始想用VideoClip方式直接加载。结果发现将视频拖放到StreamingAssets目录下时,并没有自动转换为VideoClip格式,而拖放到其它目录下则可转换为VideoClip,这又是Unity的潜规则。此路走不通只能使用URL方式加载了。

1、开始直接如下拼接URL地址,Editor下运行可以正常加载,然后Android运行时无法正常加播放。

VideoPlayer vp = gameObject.GetComponent<VideoPlayer>();

vp.url = Application.streamingAssetsPath + "/" + “test.mp4”;

2、Android手机查看Log发现如下错误:

(1)AndroidVideoMedia: Error opening extractor: -10000

网上查询发现该原因可能是由于Google在API28之后禁止使用明文网路导致,我们需要修改AndroidManifest,设置usesCleartextTraffic为true:

<application

        android:icon="@mipmap/app_icon"

        android:label="@string/app_name"

        android:usesCleartextTraffic="true"

        android:theme="@style/UnityThemeSelector">

(2)按(1)改完再打包测试仍然不能正常播放,但这次错误码变了,

AndroidVideoMedia: Error opening extractor: -10002

网上查询发现说是Unity本身有Bug,针对Android-10系统VideoPlayer不能播放persistentpath下的文件,Unity官方已于2019.7.9解决。查看当前使用的手机确实是Android10系统,于是我找到一个不是Android10系统的手机,结果安装后可以正常播放。呃呃。。。但我使用的Unity版本为2019.4.8,按说该版本应该已经修复此Bug。后来问同事有没有遇到过这种问题,同事看了URL的拼写,提示会不会URL拼写格式有问题,然后我就把URL拼写方式改为如下:

vp.url = Path.Combine(Application.streamingAssetsPath, “test.mp4”);

然后打包,放到Android10系统上也可以成功播放了。

上一篇下一篇

猜你喜欢

热点阅读