11
votes

avance de la lecture avaudioplayer

Quelqu'un aurait-il un lien avec un didacticiel pour ajouter une barre de progression de la lecture à Avudioplayer?

J'ai beaucoup recherché sur ce site et sur Google en vain sans


0 commentaires

3 Réponses :


19
votes

Je l'ai compris et ce n'était pas trop mauvais.

Il suffit de la mettre à jour dans une minuterie xxx


0 commentaires

0
votes

Ajoutez un observateur périodique de temps et mettez à jour le curseur - À Swift, ce sera comme ça -

   func addPlayBackSlider()
   {
    playbackSlider = UISlider(frame:CGRect(x:10, y:300, width:300, height:20))
    playbackSlider?.minimumValue = 0
    let duration : CMTime = playerItem.asset.duration
    let seconds : Float64 = CMTimeGetSeconds(duration)
    playbackSlider?.maximumValue = Float(seconds)
    playbackSlider?.isContinuous = true

    //If you want to manually set progressBar
    playbackSlider?.addTarget(self, action: #selector(AddAudioController.playbackSliderValueChanged(_:)), for: .valueChanged)

    //Here is the Observer
    player!.addPeriodicTimeObserver(forInterval: CMTimeMakeWithSeconds(1, 1), queue: DispatchQueue.main) { (CMTime) -> Void in
        if self.player!.currentItem?.status == .readyToPlay {
            let time : Float64 = CMTimeGetSeconds(self.player!.currentTime());
            self.playbackSlider!.value = Float ( time );
        }
    }
   }

   //If you want to manually set progressBar
   func playbackSliderValueChanged(_ playbackSlider:UISlider)
   {
    let seconds : Int64 = Int64(playbackSlider.value)
    targetTime = CMTimeMake(seconds, 1)
    print(targetTime)

    player!.seek(to: targetTime)

    if player!.rate == 0
    {
        player?.play()
        playButton!.setTitle("Pause", for: UIControlState.normal)
    }
}


3 commentaires

J'espère que cela t'aides :)


Ajout d'un observateur de temps périodique malheureusement fonctionne uniquement pour Avplayer, pas Avadiovlayer.


AvadioPlayer n'a pas AddperiDicTIMTimeObserver .



9
votes

Le CADISPAYLINK classe, qui appelle automatiquement une méthode que vous définissez dès qu'un écran redessinement se produit

la minuterie ne propose pas de tirer précis et peut dériver plus tôt ou Plus tard que les mises à jour demandées, et ne contiennent pas non plus d'écrans redessinés et peut-être peut-être heureux de fumer 10ms après qu'un écran redessinait vient de se produire. xxx


1 commentaires

En effet, la minuterie est bonne, mais cette méthode est meilleure pour le suivi.