我正在尝试在浏览器中使用Unity WebGL播放视频,但是遇到了很多问题。
我尝试了两个不同的视频播放器,但没有一个完全正常工作。
WebGLMovieTexture播放器就像这样工作
public WebGLStreamingVideoPlugin _videoPlugin = new WebGLStreamingVideoPlugin("http://www.example.net/video.mp4");
_videoPlugin.Play();
基本上,当你想播放一个视频时,你会创建一个新的实例并给它提供如上所述的URL,它会很棒!!
问题是当你想停止那个视频并播放不同的视频时,这似乎是不可能的,因为没有办法处理第一个视频,因为API中只有一个Stop(),它会停止播放但是它继续在后台传输来自互联网的视频数据。
无法删除实例,因为无法调用Destroy(),因为WebGLMovieTexture不是从monodevelop派生的,而C#似乎没有提供删除对象的方法(多么愚蠢)。即使将其设置为null也不会这样做,它会继续在后台传输视频。
因此,如果您创建一个新实例以播放不同的视频,您最终会得到两个视频流,如果您再次播放第三个视频流,那么最终会得到三个,依此类推,所以很快就会可以看出最终会有多糟糕。
我的问题是如何丢弃或销毁第一个WebGLMovieTexture播放器,或者告诉它停止播放第一个视频并开始播放另一个视频?
我尝试的第二个播放器是Unity版本5.6.0b4中的WebGL VideoPlayer,如果我在检查器中对URL进行硬编码,我只能播放视频,如果我将URL放在代码中它没有不要在浏览器中播放。
vPlayer = gameObject.GetComponent<UnityEngine.Video.VideoPlayer>();
if (vPlayer.isPlaying) {
Debug.Log("STOPPING PLAY");
vPlayer.Stop();
}
vPlayer.url = url;
vPlayer.isLooping = true;
vPlayer.frame = 0;
vPlayer.targetCameraAlpha = 1F;
vPlayer.Prepare();
vPlayer.Play();
为了让它播放第二个视频,我怀疑我会遇到与另一个视频相同的问题。
有人有任何想法可以帮助我吗?