gpt4 book ai didi

ios - AVPlayer 缓冲后停止播放视频

转载 作者:搜寻专家 更新时间:2023-10-30 22:10:10 26 4
gpt4 key购买 nike

当我从互联网加载视频(10-40MB 大)时,我无法提供流畅的播放体验。

我的 AVPlayer 要么加载整个视频然后播放,要么播放 1 秒,缓冲然后停止播放。

我尝试了无穷无尽的库、缓冲区观察器方法和教程。似乎没有任何帮助。

    .
.
.

self.makeLoaderVisible()

let playerItem = AVPlayerItem(url: url)
playerItem.addObserver(self, forKeyPath: "playbackBufferEmpty", options: .new, context: nil)
playerItem.addObserver(self, forKeyPath: "playbackLikelyToKeepUp", options: .new, context: nil)
playerItem.addObserver(self, forKeyPath: "playbackBufferFull", options: .new, context: nil)

avPlayer?.replaceCurrentItem(with: playerItem)
avPlayer?.automaticallyWaitsToMinimizeStalling = false
avPlayer?.playImmediately(atRate: 0)
// avPlayer?.play()

}


override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
if object is AVPlayerItem {
switch keyPath! {
case "playbackBufferEmpty":
// Show loader
makeLoaderVisible()

case "playbackLikelyToKeepUp":
// Hide loader
hideLoader()

case "playbackBufferFull":
// Hide loader
hideLoader()

default:
return
}
}
}

最佳答案

iOS 10.x 开始,您可以进行一些缓冲设置,例如,您可以决定缓冲视频需要多少秒:

    if #available(iOS 10.0, tvOS 10.0, OSX 10.12, *) {
avPlayer?.automaticallyWaitsToMinimizeStalling = .playWhenBufferNotEmpty
//preferredForwardBufferDuration -> default is 0, which means `AVPlayer` handle it independently, try more seconds like 5 or 10.
playerItem.preferredForwardBufferDuration = TimeInterval(5)
}

关于ios - AVPlayer 缓冲后停止播放视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50554270/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com