【问题标题】:Unity3D: Cross Platform Video Streaming?Unity3D:跨平台视频流?
【发布时间】:2014-09-15 14:26:56
【问题描述】:

我们正在使用 unity3d 开发原型应用程序。您的目标是创建一个流畅且有趣的跨平台应用。

我们现在面临的问题是通过网络传输 (h.264 - mp4) 视频内容。这将是我们应用的主要功能。

我已经尝试过 MovieTextures 和 www 类,但文件似乎必须是我们无法提供的 ogg 格式。另一方面,handheld.playfullscreenmovie 似乎是仅使用内置视频播放器的 android 和 ios 功能。如果其他平台(例如 Win8-Phone)也支持它,那就太好了。

是否有另一个跨平台选项可以通过网络流式传输 (h.264 - mp4) 视频内容并以全屏或 gui 对象的形式显示?或者有没有计划在不久的将来支持这样的事情?或者有没有稳定的插件来完成这样的任务?

谢谢

【问题讨论】:

    标签: unity3d video-streaming cross-platform mp4 h.264


    【解决方案1】:

    Unity 5 Handheld.PlayFullScreenMovie 支持 Windows Phone 和 Windows 应用商店 http://docs.unity3d.com/ScriptReference/Handheld.PlayFullScreenMovie.html


    在 Windows Phone 8 上,Handheld.PlayFullScreenMovie 在内部使用 Microsoft Media Foundation 进行电影播放。在这个平台上,不支持以完全或最小控制模式调用 Handheld.PlayFullScreenMovie。

    在 Windows 应用商店应用和 Windows Phone 8.1 上,Handheld.PlayFullScreenMovie 在内部使用 XAML MediaElement 控件。

    在 Windows Phone 和 Windows 应用商店应用中,通常没有电影分辨率或比特率限制,但是,更高的分辨率或比特率的电影会消耗更多的内存用于解码。较弱的设备也将在极高的分辨率下更快地开始跳帧。例如,诺基亚 Lumia 620 最多只能流畅播放 1920x1080 的视频。对于这些平台,您可以在此处找到支持的格式列表:Windows 应用商店支持的音频和视频格式

    【讨论】:

      【解决方案2】:

      mp4 不是可流式传输的容器。如果您阅读 ISO 规范,您会发现 MP4 无法流式传输。这是因为在所有帧都知道并考虑到之后才能写入 MOOV 原子。这 100% 不兼容实时视频。 DASH 中使用的 MP4 超集使这成为可能。本质上,他们每隔几秒钟创建一个小 mp4(称为片段)文件。或者,您可以使用专为流媒体设计的容器,例如 FLV 或 TS。

      您可能需要稍微离开 unity sdk 才能启用此功能。

      【讨论】:

      • 你手头有 ISO 吗?我怀疑“mp4 无法流式传输 [因为 moov atom]”是否属实。我指的是这个:fabiensanglard.net/mobile_progressive_playback/index.php
      • 这是预先制作的 VOD 的渐进式播放。被称为伪流。如果您想要 ISO 规范,请从 google 开始。
      • 也许这个答案需要更新,因为首先存在 mdat 之前带有 moov 的 MP4 文件(不能立即写入,但可以从已完成的文件中轻松获得)。然后所谓的碎片化MP4也存在。这两种风格甚至在 Windows 中的 Stock Media Foundation API 中都有(不太好但仍然)支持。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-13
      • 2013-03-06
      • 2011-06-15
      • 1970-01-01
      • 2017-12-15
      • 1970-01-01
      • 2014-06-18
      相关资源
      最近更新 更多