0
我想实现一个AVPlayer的滑块来显示音频文件的长度,并允许用户向前和向后擦洗。Slider Scrubbing不是很顺利
我已经使用了它,但是当您移动滑块旋钮时,它会恢复到原始位置一秒钟,然后跳转到您将其移动到的位置并再次开始播放。
有没有办法阻止这种轻弹?我可能在代码上做了一些愚蠢的事情。
这是我的滑块:
@IBAction func horizontalSliderActioned(_ sender: Any) {
audioPlayer?.pause()
//self.timer?.invalidate()
//create a CMTime the slider value
let seconds : Int64 = Int64(horizontalSlider.value)
let preferredTimeScale : Int32 = 1
let seekTime : CMTime = CMTimeMake(seconds, preferredTimeScale)
audioPlayerItem?.seek(to: seekTime)
audioPlayer?.play()
//self.timer = Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(PlayerViewController.audioSliderUpdate), userInfo: nil, repeats: true)
}
我使用一个计时器,所以我用无效,然后重新创建打不过它没有做任何事情。
这是定时器块:
func audioSliderUpdate() {
let currentTime : CMTime = (self.audioPlayerItem?.currentTime())!
let seconds : Float64 = CMTimeGetSeconds(currentTime)
let time : Float = Float(seconds)
self.horizontalSlider.value = time
}
这是由定时器,其中所述音频开始播放称为:
self.timer = Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(PlayerViewController.audioSliderUpdate), userInfo: nil, repeats: true)
最大时间是从时间设置在音频播放:
let duration : CMTime = (self.audioPlayer?.currentItem!.asset.duration)!
let seconds : Float64 = CMTimeGetSeconds(duration)
let maxTime : Float = Float(seconds)
self.horizontalSlider.maximumValue = maxTime
我正在设置音频播放的最大时间,生病添加到这个问题 – Pippo