0
오디오 파일의 길이를 표시하고 사용자가 앞뒤로 문질러 닦을 수 있도록 AVPlayer 용 슬라이더를 구현하려고합니다.Slider Scrubbing not so smooth
나는 거의 작동하고 있지만 슬라이더 손잡이를 움직이면 원래 위치로 잠시 되돌아 간 다음 앞으로 이동하여 다시 재생을 시작합니다.
이 깜박임을 중지 할 수있는 방법이 있습니까? 나는 아마 코드에 어리 석다. 내가 무효화하고 다시 함께 연주 그래서 내가 타이머를 사용하고 있지만 아무 짓도 안 했어요
@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)
}
:
이 슬라이더 내 블록이다.
이
타이머 블록이다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
}
let duration : CMTime = (self.audioPlayer?.currentItem!.asset.duration)!
let seconds : Float64 = CMTimeGetSeconds(duration)
let maxTime : Float = Float(seconds)
self.horizontalSlider.maximumValue = maxTime
오디오가 재생되는 최대 시간을 설정하고 있는데, 질문에 잘못 추가합니다. – Pippo