AVPlayer从未准备好播放

时间:2016-07-21 19:38:11

标签: ios avfoundation avplayer key-value-observing avplayeritem

我有AVPlayer正在加载远程媒体URLHLS流),有时播放器永远不会准备播放,但不会出现错误。是否还有其他地方可能存在错误或检查是否仍在加载AVPlayerItem

我有KVO的速率,状态和播放可能会跟上,而视频未加载时从未调用过。我添加了一个按钮来检查播放器,播放器项目以及播放是否可能跟上错误。当玩家卡住时,这些报告为零,零和假。当玩家卡住时似乎是随机的(完全拒绝加载vidoe),特定视频不会发生这种情况。

我可以采取哪些其他步骤来调试此问题?还有其他地方可以检查错误或状态吗?

更多信息已检查: 播放缓冲区为空:true 播放缓冲区已满:false

2 个答案:

答案 0 :(得分:2)

我们的解决方案是在重用播放器之前,我们使用player.replaceCurrentItemWithPlayerItem(nil)取消分配AVPlayer。替换当前项目的某些原因有时会导致问题。我们还确保我们的视频按顺序加载,而不是一次性加载。这似乎解决了我们的问题。

答案 1 :(得分:1)

要从您的应用中加载来自远程服务器的网址,您必须将其添加到您的info.plist

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>mydomain.com</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSExceptionRequiresForwardSecrecy</key>
            <true/>
            <key>NSExceptionMinimumTLSVersion</key>
            <string>TLSv1.2</string>
            <key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
            <false/>
            <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
            <true/>
            <key>NSThirdPartyExceptionMinimumTLSVersion</key>
            <string>TLSv1.2</string>
            <key>NSRequiresCertificateTransparency</key>
            <false/>
        </dict>
    </dict>
</dict>

see the docs

不要像我输入的那样完全添加线条。根据您的需求配置它们。请注意,Apple的iOS默认配置是期望https个连接,而不是http。您必须将其配置为允许http