[编辑] 我正在为OculusGo = Android准备一个应用程序 在场景中,有4个角色由视频剪辑表示。 视频大小在10mb-30 mb之间。
所有视频均带有着色器GoogleVR / Unlit / TransparentOverlay 视频被编码为WebM / VP9 /使用Adobe编码器保持Alpha水平。 这些视频进一步统一转换为Android VP8(再次)。
在场景开始时从资源文件夹加载的视频,然后在需要播放时从每个视频中调用VideoPlayer.Play(),最后将它们一起播放。 (一个接一个地开始,然后一起继续)。
问题是: 应该播放第三个视频时,我的应用程序崩溃了。 当我“准备”视频时,它不会崩溃,而只会在“ VideoPlayer.Play()”上崩溃
这是我当前的代码:
public float waiting;
public AudioSource characterAudio;
VideoPlayer videoPlayer;
bool videoStarted = true;
void Awake () {
videoPlayer = GetComponent<VideoPlayer>();
}
private void Update()
{
if (characterAudio != null)
{
if (characterAudio.isPlaying && videoStarted)
{
StartCoroutine(StartVideo());
videoStarted = false;
Debug.Log(characterAudio.name + " called once from update");
}
}
}
IEnumerator StartVideo()
{
yield return new WaitForSeconds(waiting);
videoPlayer.enabled = true;
videoPlayer.Prepare();
while(!videoPlayer.isPrepared)
{
Debug.Log("video is preparing");
yield return null;
}
videoPlayer.Play();
Debug.Log("videoStarted, char name is: " + characterAudio.name);
}
这是我从logcat得到的错误(使用命令:logcat | grep -i unity)
ActivityManager:强制删除ActivityRecord
消费者关闭了输入通道或发生了错误。事件= 0x9
频道无法恢复,将被处置!
InputDispatcher:尝试注销已经注销的输入通道
请帮助,我已经尝试了两个星期,以使这些视频同时运行。
我也在这里阅读了有关使用其他线程的信息:https://gamedev.stackexchange.com/questions/113096/how-to-not-freeze-the-main-thread-in-unity 以及有关同时播放的视频:Unity App freezes when loading Multiple Videos on same Scene
我运行了logcat(而不是第一个),这是在视频准备结束后我得到的: