编辑:我正在准备一个OculusGo = Android的应用程序,在场景中有4个字符由视频剪辑所代表。视频大小在10 mb - 30 mb之间。
所有视频都带有着色器GoogleVR/Unlit/TransparentOverlay,视频用Adobe编码器编码到WebM/ VP9/ keep。这些视频进一步统一编码到安卓,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 使用者关闭输入通道或出现错误。events=0x9 通道已无法恢复,将被处理! InputDispatcher:尝试注销已未注册的输入通道
请帮助我,我已经尝试了两个星期的让这些视频同时运行。
我还在这里读到了关于使用不同的线程:https://gamedev.stackexchange.com/questions/113096/how-to-not-freeze-the-main-thread-in-unity和视频同时播放在这里:在同一场景中加载多个视频时,统一应用程序会冻结
我运行了logcat (不是统一一),这就是视频准备结束后我得到的结果:
发布于 2022-02-21 09:46:00
我解决这个问题的方法是通过以下步骤:
因此,为了总结,而不是用4种不同的材料加载和播放4段视频,并在系统上造成超载,我在1份材料上播放了1段视频。应用程序运行顺利。
https://stackoverflow.com/questions/53421113
复制相似问题