iOS 10 AVPlayer 不会从 URL 流式传输没有扩展名且内容类型为 video/mp4 的视频

iOS 10 AVPlayer will not stream video from URL with no extension and with video/mp4 as content type

目前,我们通过 AVPlayerViewController 使用标准 AVPlayer 来播放视频。我们正在以 https://ourdomain/media/mediaid?jwt=authTokenHere 格式从 url 流式传输视频。如您所见,url 没有扩展名;然而 headers 被设置在负载上以指示响应是视频。

虽然链接可以使视频在桌面 Safari 和 Chrome 中正常播放,但在我们的应用程序中无法通过 iOS 的 AVPlayer 播放。是否有 AVPlayer 期望的某种特定格式?

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

雷达links:

AVURLAsset should not require a file extension to work

AVURLAsset should not require a file extension to work

解决方法/破解:

循环遍历可播放的 MIME 类型并创建符号 links 到具有扩展名的实际文件并检查它们是否可播放。

注:

  • 符号Link将在应用程序进入后台时被删除
  • 创建符号 link 检查 this SO 答案

好吧 - 最后发现这个问题的答案是多方面的。这是我需要做的才能让事情正常进行。

  1. 文件确实需要有扩展名。
  2. 服务器没有 正确配置。它需要提供渐进式下载 响应范围为 headers.

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