Unity VideoPlayer.url 在脚本中更新后无法播放

3

我刚接触Unity,在尝试通过我的脚本更新VideoPlayer。 我已经确认代码可以使用预设值运行,但是当我执行videoPlayer.url = "新的视频url"时,它不会播放。

这是我的播放视频代码。 这将起作用,但是一旦我给它一个要更新的url,它只是更改了源但没有播放视频。

public IEnumerator playVideo(string videoYear) {
        // This line updates the url but the video will not actually play.
        videoPlayer.url = "example.com/app/" + videoYear + ".mp4";

            videoPlayer.Prepare();
            WaitForSeconds waitForSeconds = new WaitForSeconds(1);

            while(!videoPlayer.isPrepared) 
            {
                yield return waitForSeconds;
                break;
            }

            rawImage.texture = videoPlayer.texture;
            videoPlayer.Play();
    }

控制台中有任何错误吗? - Nitro557
你尝试在URL前面加上“http://”了吗?文档中的示例使用了这个(https://docs.unity3d.com/ScriptReference/Video.VideoPlayer.html)。 - Nicklas C.
@Nitro557 没有控制台错误。 - Joe Scotto
1
@NicklasC。是的,在我的实际代码中它有 http:// - Joe Scotto
@JoeScotto 抱歉,但问题不在上面的脚本中。它必须是由其他原因引起的,例如VideoPlayer设置、脚本执行或者链接 - 视频是否已经准备好或者卡在while循环中? - Nicklas C.
显示剩余4条评论
1个回答

0

这个方法是从协程中运行的,对吗? 您还提到在调试模式下URL甚至没有被设置为值?

操作: 在不使用协程的情况下运行完全相同的代码,并检查在将静态url值传递给确定性方法时是否出现问题。(即,不使用协程)。 如果可以正常工作,则检查调用协程的代码,并考虑将其添加到您的问题中,以展示调用流程。

我猜测问题的代码示例是简化的。由于问题评论提到问题存在于您的代码示例之外。

您是否使用第二个协程先检索视频源文件的URL? 如果是,请尝试通过向启动视频播放器的协程传递常量URL来首先隔离它。 如果可以正常工作,则添加第一协程的第二个yield语句,以便等待URL值准备就绪以及加载视频源的视频播放器对象的准备工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接