【问题标题】:iOS 10 AVPlayer will not stream video from URL with no extension and with video/mp4 as content typeiOS 10 AVPlayer 不会从没有扩展名的 URL 流式传输视频,并且将 video/mp4 作为内容类型
【发布时间】:2017-04-24 08:25:40
【问题描述】:

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

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

【问题讨论】:

  • 我相信在 AVPlayer 中播放的媒体必须有一个文件扩展名,我曾经在本地播放没有扩展名的文件时碰到过这个问题。添加了.mp4,瞧。

标签: ios video mime-types avplayer avplayerviewcontroller


【解决方案1】:

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

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

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

【讨论】:

  • 你能分享代码以从 url 播放 .mp4 格式的视频吗?这将是一个很大的帮助。
【解决方案2】:

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

雷达链接:

AVURLAsset should not require a file extension to work

AVURLAsset should not require a file extension to work

解决方法/破解:

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

注意:

  • 应用进入后台时,符号链接将被删除
  • 创建符号链接检查this SO 答案

【讨论】:

  • 谢谢你。不幸的是,我不相信符号链接选项对我有用,因为有问题的文件是远程的(HTTPS)。据我所知(并已测试),当您尝试从 file:// 符号链接到 https:// 时,NSFileManager 会引发错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-02
  • 2013-02-11
  • 1970-01-01
相关资源
最近更新 更多