let playerItem = AVPlayerItem(url: videoURL)
playerItem.preferredForwardBufferDuration = 5
let player = AVPlayer(playerItem: playerItem)
class CustomSlider: UISlider {
var seekCallback: (() -> Void)?
override func endTracking(_ touch: UITouch?, with event: UIEvent?) {
super.endTracking(touch, with: event)
seekCallback?()
}
}
class ViewController: UIViewController {
@IBOutlet weak var slider: CustomSlider!
override func viewDidLoad() {
super.viewDidLoad()
let videoURL = URL(string: "https://myremoteserver.com/myvideo.mp4")!
let playerItem = AVPlayerItem(url: videoURL)
playerItem.preferredForwardBufferDuration = 5
let player = AVPlayer(playerItem: playerItem)
let playerLayer = AVPlayerLayer(player: player)
playerLayer.frame = view.bounds
view.layer.addSublayer(playerLayer)
// 监听 seek 完成的事件
slider.seekCallback = {
let destTime = CMTimeMakeWithSeconds(Double(self.slider.value), preferredTimescale: 1)
player.seek(to: destTime)
}
}
}
let videoURL = URL(string: "https://myremoteserver.com/myvideo.mp4")!
let playerItem = AVPlayerItem(url: videoURL)
playerItem.preferredForwardBufferDuration = 5
let player = AVPlayer(playerItem: playerItem)
let playerLayer = AVPlayer
上一篇:AVPlayer能够从API端点正确地流式传输视频文件吗?
下一篇:AVPlayerRateDidChangeReasonAppBackgrounded被错误调用,即使应用程序没有在后台运行。