2017-01-23 13 views
0

Я работаю с Google VR SDK for Unity, пытаясь создать простой 360-видео-просмотрщик, используя компоненты, поставляемые с SDK. Я пытаюсь расширить PanoVideoSample для динамического изменения исходного видео, когда пользователь переходит из меню.Google VR SDK (Unity) - URL-адрес подкачки GvrVideoPlayerTexture

У меня возникли проблемы с изменением URL-адреса для GvrVideoPlayerTexture с помощью кода. На своей демонстрационной сцене (VideoDemo) у них есть PanoVideoSample, который содержит видеосферу, в которой вы можете редактировать сценарий GVRVideoPlayerTexture на панели инспектора, чтобы указать правильный URL-адрес видео.

Я хотел бы динамически установить URL-адрес видео на C#, а не жестко-кодировать кучу отдельных видеокадров, затем скрыть/показать их. Я почти получил эту работу со следующим кодом.

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); 

} 

Код выше, кажется, работает, но проблема в том, текстура на VideoSphere белеет после того, как URL-адрес установлен, и текстура реинициализируется. Я вижу, что новое видео загружается, и я слышу звук для нового видео, но сцена просто показывает белую текстуру. See the output here

Я интересно, если я пропускаю ключевой шаг на GvrVideoPlayerTexture или, возможно, дополнительные вызовы для обновления StereoPanoSphereMaterial, который используется для визуализации сцены. Этот SDK довольно новый, и, похоже, не так много людей пишут об этом, поэтому любая помощь приветствуется.

ответ

0

В конце концов я нашел ответ на свой вопрос в документации по документам Google VR (Streaming Video Support). Я до сих пор не совсем понимаю, что я делал неправильно в своей первой попытке, но это код, который работал для меня.

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();