【问题标题】:How to play video while it is downloading using AVPro video in unity3D?如何在unity3D中使用AVPro视频下载视频时播放视频?
【发布时间】:2018-08-27 04:00:02
【问题描述】:

我想在通过 unitywebrequest 下载视频的同时播放视频。 AVPro 视频会支持这个吗?如果是这样,请给我一些指导,因为我是统一和 avpro 视频的新手。我可以播放通过 AVPro 演示中的 FullscreenVideo.prefab 完全下载的视频。任何帮助将不胜感激。

【问题讨论】:

    标签: unity3d download video-streaming


    【解决方案1】:

    有两个主要选项可用于在视频仍在下载时显示视频。

    通过直播

    您可以使用媒体播放器组件上的“绝对路径或 URL”选项将视频流式传输到 AVPro 视频,然后将其链接到 rtsp、MPEG-DASH、HLS 或 HTTP 渐进式流格式的流。根据您将针对的平台,其中一些选项将比其他选项更好地工作

    可以在 AVProVideo 用户手册中找到支持哪种平台的文件格式表,该用户手册包含在第 12 页及以后的 AVProVideo 中。

    如果您想使用流媒体,您还需要在播放器设置中将“互联网访问”选项设置为“必需”,因为没有互联网访问就无法播放视频。 当缓冲足够的视频时,正在流式传输的视频将自动开始/恢复播放。

    但是,这确实需要持续的互联网连接,如果您针对的是移动设备,这可能并不理想,或者如果您打算循环播放视频,则不需要。

    HLS m3u8

    HTTP Live Streaming (HLS) 的工作原理是将整个流切割成更短且易于管理的数据块。然后,无论流有多长,这些块都将按顺序下载。 m3u8 是一种与播放列表一起使用的文件格式,它保留有关多个媒体文件而不是整个视频的位置信息,然后可以将其输入 HLS 播放器,该播放器将按照 m3u8 文件中的指示按顺序播放小型媒体文件。

    如果您打算重复播放较小的视频,则使用此方法很有用,因为用户只需下载每个视频块一次,然后您可以将其存储以供以后使用。

    您还可以根据需要将这些视频块设为长或短,并设置要预加载多少块的缓冲区。例如,如果您将块大小设置为 5 秒,缓冲 5 个视频,那么您将拥有的唯一加载时间是加载视频的前 25 秒。一旦加载了前 5 个块,它将开始播放视频并在后台加载其余的块,而不会中断视频(假设您的互联网速度可以处理它)

    一个缺点是您必须自己将所有视频转换为 m3u8。不过,FFMPEG 之类的工具可以帮助解决这个问题。

    参考文献

    【讨论】:

    • 感谢@remy_rm 的回答。但是,有没有办法从下载的数据中流式传输视频。因此,它将减少用户的互联网使用量。
    • 是的。如果您使用 HLS/m3u8 方法,您可以像保存任何其他文件一样保存下载的文件,然后再打开该文件而不是流式传输它。您可以使用 WWW (docs.unity3d.com/ScriptReference/WWW.html) 像 WWW www = new WWW("http://yourSite.com/Videos/SomeVideo.m3u8"); 那样下载它,然后使用 File.WriteAllBytes(<Path where you want to save>, www.bytes); docs.unity3d.com/ScriptReference/… 保存视频。然后您可以执行检查文件是否存在,如果不下载,是否从保存的文件播放
    • 这将只下载不同流选项的文本文件,而不是视频。
    猜你喜欢
    • 2014-05-13
    • 2018-03-21
    • 1970-01-01
    • 2010-09-25
    • 1970-01-01
    • 1970-01-01
    • 2019-05-10
    • 2014-05-01
    • 2012-10-09
    相关资源
    最近更新 更多