我有一个使用AVPlayer
从远程网址播放AVPlayerItem
(视频)的应用。在iOS 6-8中,我一直在观察AVPlayerItem's
的{{1}}值,以便在loadedTimeRanges
准备播放时播放通知我。这也适用于观察项目的playerItem
的值,我相信。
更新到iOS 9测试版后,我发现的duration
上的值都没有进入AVPlayerItem
- 方法。就好像我根本没有观察它们一样。我仍然会收到observeValueForKeyPath
上的值的通知,但AVPlayer
上没有。这可能是一个错误,还是这里的环境发生了变化?我找不到任何关于这个......
为了澄清,在iOS 6-8中,只要有任何加载的时间范围,视频就会开始播放。在iOS9中,我在加载任何时间范围时都不会收到通知。
更新
在观察AVPlayerItem
的值status
后,我现已确认该项的状态已更改为AVPlayerItem
。通过在失败后退出项目的Failed
,我得到了这个:
NSError
答案 0 :(得分:5)
我今天遇到了同样的问题。就我而言,由于iOS 9中新的App Transport Security功能,加载视频失败了。
您可以像这样在info.plist中添加每个域的例外:
unchange state
如果您需要从任意域加载视频,可以完全禁用App Transport Security,但不建议这样做。
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>yourserver.com</key>
<dict>
<!--Include to allow subdomains-->
<key>NSIncludesSubdomains</key>
<true/>
<!--Include to allow HTTP requests-->
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
<!--Include to specify minimum TLS version-->
<key>NSTemporaryExceptionMinimumTLSVersion</key>
<string>TLSv1.1</string>
</dict>
</dict>
</dict>