iOS 10 AVPlayer不会从没有扩展名的URL流式传输video,也不会将video/ mp4作为内容类型

目前,我们通过AVPlayerViewController使用标准AVPlayerViewController来播放video。 我们从url流式传输video,格式为https:// ourdomain / media / mediaid?jwt = authTokenHere 。 如你所见,url没有扩展名; 但是,在有效负载上设置标头以指示响应是video。

HTTP响应标头

虽然链接导致video在桌面Safari和Chrome中播放得很好,但在我们的应用程序中它不能通过iOS的AVPlayer播放。 是否有一些AVPlayer期望的特定格式?

好吧 – 结果发现答案是多方面的。 这就是我需要做的事情才能让事情顺利进行。

  1. 文件确实需要扩展。
  2. 服务器配置不正确。 它需要通过响应一系列标头来提供渐进式下载响应。

通过更新我们的后端以提供此响应并将正确的扩展名附加到video文件,我们现在正按预期流式传输到AVPlayer 。 感谢所有提供提示的人!

AVURLAsset需要文件扩展名才能工作。 不幸的是,从iOS 5开始,已经有一些雷达针对同一个问题开放了,但似乎它甚至没有在iOS 10上更新。

雷达链接:

AVURLAsset不需要文件扩展名才能工作

AVURLAsset不需要文件扩展名才能工作

WorkAround / Hack:

循环播放可播放的MIME类型,并使用扩展名创建指向实际文件的符号链接,并检查它们是否可播放。

注意:

  • 当应用程序进入后台时,将删除符号链接
  • 要创建符号链接,请检查此 SO答案