菜鸟教程小白 发表于 2022-12-12 12:15:23

ios - 如何检测 AVPlayer 中的缓冲?


                                            <p><p>我有一个流媒体视频应用,我想知道如何检测该应用是否正在缓冲。</p>

<p>在 AVPlayer 中,<code>currentItem.isPlaybackLikelyToKeepUp</code>bool 值告诉您播放缓冲区何时可能跟上当前下载速度,<code>currentItem.isPlaybackBufferEmpty</code>告诉您播放缓冲区何时为空。</p>

<p>问题出现在播放视频时,由于网速太慢导致视频暂停。如果我然后按下播放按钮,播放器的 <code>rate</code> 为 1,但它没有播放。</p>

<p>如何检测视频是否因为正在缓冲而暂停? <code>currentItem.isPlaybackBufferEmpty</code> 即使在播放视频时也是如此...</p>

<p>编辑:我已经结合了这两个,现在我显示的显示缓冲的加载器仅在 <code>currentItem.isPlaybackBufferEmpty && !currentItem.isPlaybackLikelyToKeepUp</code> 时显示,加载器现在仅在视频后几秒钟显示开始播放。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>这对我来说很好,也许它可以帮助,在 <code>addPeriodicTimeObserver</code> 中调用 <code>self?.bufferState()</code></p>

<pre><code>    private func bufferState() {
    if let currentItem = self.avPlayer.currentItem {
      if currentItem.status == AVPlayerItemStatus.readyToPlay {
            if currentItem.isPlaybackLikelyToKeepUp {
                print(&#34;Playing &#34;)
            } else if currentItem.isPlaybackBufferEmpty {
                print(&#34;Buffer empty - show loader&#34;)
            }else if currentItem.isPlaybackBufferFull {
                print(&#34;Buffer full - hide loader&#34;)
            } else {
                print(&#34;Buffering &#34;)
            }
      } else if currentItem.status == AVPlayerItemStatus.failed {
            print(&#34;Failed &#34;)
      } else if currentItem.status == AVPlayerItemStatus.unknown {
            print(&#34;Unknown &#34;)
      }
    } else {
      print(&#34;avPlayer.currentItem is nil&#34;)
    }
}
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 如何检测 AVPlayer 中的缓冲?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/40149717/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/40149717/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 如何检测 AVPlayer 中的缓冲?