2017-01-20 9 views
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) 

最大時間は、音声が再生される期間から設定されます。

答えて

0

私はあなたのスライダーの範囲が0を割り当てることによって達成できる範囲に設定されていないと思いますそれに

デフォルト値は次のように設定されている:あなたはまだしていない場合はenter image description here

あなたは、... 1 ... 0に対して再生音の長さを、それらを設定したり、相対単位0で時間を入力する必要があります。

+0

私はオーディオが再生される最大時間を設定しています。これを質問に追加してください – Pippo

関連する問題