Android 上的 StageVideo/NetStream 在播放前会下载整个视频



我(终于)处于VOD项目的尾声。它运行完美,除了在Android上。基本上,在Android上,视频在下载整个视频之前不会播放。媒体服务器远远超出了范围,因此我们只是从 AWS S3 提供视频。在iOS上工作得非常好。流式传输和下载视频都完全按照您的预期工作。 在Android上,它似乎不想在下载完成之前播放。在本地网络上使用服务器时,它运行良好(我什至偶尔看到缓冲区,所以我知道它不仅仅是快速下载),但没有远程功能。

我唯一的猜测是这与iOS和Android流式传输视频的方式不同有关。在 iOS 上,视频通过字节范围请求进行流式传输。每隔几秒钟,它就会超时,并为文件请求另一个字节范围。在Android上,它只为整个文件发送一个请求。但是,不确定如何解决这个问题。

有人在这里有任何提示或指示吗?任何帮助将不胜感激。

    发生在安卓 4.4
  • 和 4.3 上。
  • 同时使用我们拥有的远程生产服务器和 AWS S3。
  • 带有 Flex 4.11 的 AIR 3.9
  • 利用StageVideoNetStream
  • 测试设备是Nexus 5和Nexus 4

问题出在视频本身。适用于Android的AIR使用标准的流式传输方法,其中请求整个文件并逐位读取(与重复请求特定字节范围的iOS相反)。

这里的问题是,在读取视频的元数据之前,播放器无法开始播放。标准 h.264 编码看到位于文件末尾的元数据(moov atom),因此视频在下载整个视频之前不会开始。

我发现解决此问题的最简单方法是通过手刹重新编码视频,并选择"网络优化"选项。这将确保元数据位于最开头(我相信是字节 24),因此视频应该立即开始播放。

来自土砖的解释

让我想到使用"Web优化"选项的线程

相关内容

  • 没有找到相关文章

最新更新