在Swift 4中,AVPlayerLoop不会提供无缝循环的功能。然而,您可以使用以下代码示例创建一个自定义循环播放器:
import AVFoundation
class SeamlessLoopPlayer {
private var player: AVPlayer?
init(url: URL) {
let playerItem = AVPlayerItem(url: url)
player = AVPlayer(playerItem: playerItem)
// 监听播放结束事件
NotificationCenter.default.addObserver(self, selector: #selector(playerDidFinishPlaying), name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: player?.currentItem)
}
func play() {
player?.play()
}
func pause() {
player?.pause()
}
@objc private func playerDidFinishPlaying(note: NSNotification) {
// 重置播放时间到起始点
player?.seek(to: CMTime.zero)
player?.play()
}
}
使用示例:
let url = Bundle.main.url(forResource: "yourVideo", withExtension: "mp4")!
let loopPlayer = SeamlessLoopPlayer(url: url)
loopPlayer.play()
这个自定义循环播放器会在播放结束后将播放时间重置到起始点,并重新开始播放,从而实现无缝循环的效果。