如何从Unity Streaming Assets文件夹中应用和播放视频作为纹理(MovieTexture)

时间:2017-03-20 17:29:31

标签: c# video unity3d video-streaming textures

我正在尝试从Streaming Assets文件夹中获取视频(.ogv),将其应用到曲面并播放。 (下面添加了C#代码) - Unity 5 Personal

void Start () {
 private MovieTexture myMoviePlayerTexture;

 string filePath = System.IO.Path.Combine(Application.streamingAssetsPath, "test.ogv");

 WWW www = new WWW("file:///" + filePath);
 Renderer r = GetComponent<Renderer>();
 r.material.mainTexture = www.movie;
 www.movie.Play();
}

将C#脚本添加到一个简单的平面上。

然而,当我将MovieTexture添加到一个平面(来自资源文件夹)时,它会毫无问题地播放。

((MovieTexture)GetComponent<Renderer>().material.mainTexture).Play();

编辑:问题:视频无法从Streaming Assets文件夹播放,看起来好像材料已加载但无法播放。

任何帮助appriciated。感谢。

修改

这是游戏视图:link,这是文件夹结构link没有什么特别喜欢的测试视频

1 个答案:

答案 0 :(得分:4)

您的问题中的代码甚至没有编译。有很多错误。

无论如何,请勿使用WWW直接从www.movie.Play();对象播放视频。首先从WWW获取MovieTexture,然后从那里播放视频。另外,在播放视频之前,请检查MovieTexture.isReadyToPlay是否为true。您可以在coroutineUpdate()功能中执行此操作。

确保 test.ogv 视频位于 StreamingAssets 文件夹中。您的屏幕截图未显示 StreamingAssets 文件夹中的内容。

最后,在飞机上播放视频现在已经过时了。您can在Unity的 RawImage 上播放视频,这在Unity中更易于使用。

我无法分辨您正在使用的 Unity 5 版本,但请更新为 5.5 或更高版本,然后使用以下代码:

MovieTexture myMoviePlayerTexture;
void Start()
{
    string filePath = System.IO.Path.Combine(Application.streamingAssetsPath, "test.ogv");

    WWW www = new WWW("file:///" + filePath);
    Renderer r = GetComponent<Renderer>();
    myMoviePlayerTexture = www.GetMovieTexture();

    r.material.mainTexture = myMoviePlayerTexture;
}

void Update()
{
    if (myMoviePlayerTexture.isReadyToPlay && !myMoviePlayerTexture.isPlaying)
    {
        myMoviePlayerTexture.Play();
    }
}

值得注意的是MovieTexture现已弃用。有关播放视频的最新方法,请参阅this帖子。