0

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

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

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

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

1 回答 1

3

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

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

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

Adobe的解释

让我想到使用“Web Optimized”选项的线程

于 2013-11-13T16:23:03.310 回答