Unity3d创建的Android应用程序在播放视频后更容易崩溃

时间:2016-11-05 15:28:53

标签: android video unity3d

我正在创建一个可以播放视频和查看模型的Android应用。我决定使用unity3d来完成它 我在几个场景中设置了2个功能,每个场景都有它的功能。当我想看到不同的视频或模型时,我会进入不同的场景。如果我看到模型,无论有多少型号,都可以成功运行。但是,当我看到一个视频(可能只有10M)后,当我查看模型时,应用程序更容易崩溃 我使用Handheld.PlayFullScreenMovie()在unity3d中播放视频。 android中的错误如下。

  

11-05 22:33:51.589 14794-14807 /? I / Adreno:DequeueBuffer:dequeueBuffer失败了   11-05 22:33:51.609 14794-14807 /? W / Adreno-GSL :: ioctl fd 29代码0xc0140933(IOCTL_KGSL_TIMESTAMP_EVENT)失败:错误24打开文件太多
  11-05 22:33:51.609 14794-14807 /? W / Adreno-GSL ::(1e,14,92844)失败24太多打开的文件
  11-05 22:33:51.619 14794-14807 /? E / Surface:dequeueBuffer:IGraphicBufferProducer :: requestBuffer失败:-2147483646

也许有可能打开文件?但是只有一个视频,当我在unity3d中改变场景时它应该从内存中删除。如果您有任何想法,请与我联系。非常感谢你!

已添加:实际上我认为我的问题与the question相同。它是Unity3d的Bug吗?

2 个答案:

答案 0 :(得分:0)

试试这个:

void Start()
{
    StartCoroutine(ShowMotion());
}

IEnumerator ShowMotion()
{
    Handheld.PlayFullScreenMovie("motion.mp4", Color.black, FullScreenMovieControlMode.CancelOnInput);
    yield return new WaitForEndOfFrame();
    yield return new WaitForEndOfFrame();//not writing the second yield return causes a failure.
}

答案 1 :(得分:0)

试试这段代码:

GameObject allObjects;

void Start()
{
    allObjects = GameObject.FindObjectsOfType<GameObject>();

    StartCoroutine(StartMovie());
}

IEnumerator StartMovie()
{
    foreach(GameObject obj in allObjects)
         obj.SetActive(false);

    yield return new WaitForEndOfFrame();

    Handheld.PlayFullScreenMovie("motion.mp4", Color.black, FullScreenMovieControlMode.CancelOnInput);
}