1

我正在使用适用于 Unity 的 Google VR SDK尝试使用 SDK 附带的组件构建一个简单的 360 度视频查看器。我正在尝试扩展他们的 PanoVideoSample 以在用户从菜单导航时动态更改源视频。

我无法通过代码更改 GvrVideoPlayerTexture 的 URL。在他们的演示场景 (VideoDemo) 中,他们有一个包含 Video Sphere 的 PanoVideoSample,您可以在检查器面板中编辑 GVRVideoPlayerTexture 脚本以指向正确的视频 URL。

我想在 C# 中动态设置视频 URL,而不是硬编码一堆单独的视频球然后隐藏/显示它们。我几乎已经使用以下代码完成了这项工作。

public void SwapVideo(int index){

    videoSphere.GetComponentInChildren<GvrVideoPlayerTexture> ().videoURL = urls [index];// my new url 
    videoSphere.GetComponentInChildren<GvrVideoPlayerTexture>().ReInitializeVideo ();
    videoSphere.SetActive (true);

}

public void ReturnToMainMenu(){

    videoSphere.GetComponentInChildren<GvrVideoPlayerTexture>().CleanupVideo();
    videoSphere.SetActive (false);

    this.gameObject.SetActive (true);

}

上面的代码似乎可以工作,但问题是在设置 url 并重新初始化纹理后 videoSphere 上的纹理变成白色。我可以看到新视频已加载,并且我可以听到新视频的音频,但场景仅显示白色纹理。 在此处查看输出

我想知道我是否缺少 GvrVideoPlayerTexture 上的关键步骤,或者是否缺少其他调用来更新用于渲染场景的 StereoPanoSphereMaterial。这个 SDK 是相当新的,似乎没有很多人写它,所以任何帮助表示赞赏。

4

1 回答 1

0

我最终在 Google VR 文档(流媒体视频支持)的文档中找到了我的问题的答案。我仍然不完全清楚我在第一次尝试中做错了什么,但这是对我有用的代码。

videoSphere.GetComponentInChildren<GvrVideoPlayerTexture> ().videoURL = urls [index];
    videoSphere.GetComponentInChildren<GvrVideoPlayerTexture> ().videoType = GvrVideoPlayerTexture.VideoType.Other;
    videoSphere.GetComponentInChildren<GvrVideoPlayerTexture> ().videoProviderId = string.Empty;
    videoSphere.GetComponentInChildren<GvrVideoPlayerTexture> ().videoContentID = string.Empty;
    videoSphere.GetComponentInChildren<GvrVideoPlayerTexture> ().CleanupVideo ();
    videoSphere.GetComponentInChildren<GvrVideoPlayerTexture> ().ReInitializeVideo ();
于 2017-02-01T18:38:35.147 回答