0
私はAVPlayerのスライダを実装して、オーディオファイルの長さを表示し、前後にスクラブできるようにしています。スライダの滑りがあまり滑らかでない
私はかなりうまく動いていますが、スライダーつまみを動かすと元の位置に戻って1秒間前に戻り、どこに移動して再び再生を開始します。
このフリッキングを停止する方法はありますか?私はおそらくコードで何か愚かなことをしている。私は無効にしてから再作成して遊んでいたので、私はタイマーを使用していますが、それは何もしなかった
@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)
最大時間は、音声が再生される期間から設定されます。
私はオーディオが再生される最大時間を設定しています。これを質問に追加してください – Pippo