【问题标题】:How to apply and play a video from the Unity Streaming Assets folder as a texture (MovieTexture)如何将 Unity Streaming Assets 文件夹中的视频作为纹理应用和播放 (MovieTexture)
【发布时间】:2017-03-20 17:29:30
【问题描述】:

我正在尝试从 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 没什么好看的,只是一些测试视频

【问题讨论】:

  • 有什么问题?你从来没有解释过你遇到了什么问题
  • @programmer 抱歉,视频无法播放。似乎加载了一些材料,但它没有从 Streaming Assets 文件夹播放
  • 你在什么平台上测试这个?你能放一张你放视频的文件夹的截图吗?
  • @Programmer 这是游戏视图:link 这是文件夹结构 link 没什么好看的,只是一些测试视频
  • @Programmer 我也尝试过 Assets > StreamingAssets 路径,但无济于事

标签: c# video unity3d video-streaming textures


【解决方案1】:

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

无论如何,不​​要使用www.movie.Play(); 直接从WWW 对象播放视频。首先从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 帖子了解最新的视频播放方法。

【讨论】:

  • 感谢您的回复和解决方案。我想在一个对象上播放视频,RawImage 仍然可以吗?我尝试使用您的解决方案,但我收到错误 link 的 www.GetMovieTexture();线。我正在使用 Unity 5.5.2f1。
  • 如果您只想播放视频,请使用 RawImage。它将显示在屏幕上。如果您希望视频显示在平面或立方体等 3D 对象上,请使用我的答案中的解决方案。我不知道你在做什么,但在 RawImage 之前,用平面播放视频几乎是显示视频的唯一方式。 RawImage 不再是这样了。决定权完全取决于您。
  • 很抱歉这个错误。我使用 Unity 5.6 来制作这个解决方案。您可以将该部分替换为www.movie
  • 谢谢您,现在尝试您的解决方案并下载 5.6beta。
  • 谢谢,我认为这将有助于我努力实现的目标。
猜你喜欢
  • 1970-01-01
  • 2012-01-05
  • 2015-06-29
  • 1970-01-01
  • 1970-01-01
  • 2011-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多