2017-02-20 2 views
-1

Ich versuche 1/50 Sek. Intervall in meinem AVPlayer Zeitbeobachter zu verwenden. Aber das druckt nicht alle Werte.AVPlayer addPeriodicTimeObserver druckt nicht alle Werte

let interval = CMTimeMake(1, 50)  
AVPlayerVC.player?.addPeriodicTimeObserver(forInterval: interval, queue: DispatchQueue.main, using: {(progressTime) in 

    let seconds = CMTimeGetSeconds(progressTime) 
    let doubleSeconds = String(format: "%.2f", seconds) 
    print ("\(doubleSeconds) -") 

Dies ist das Ergebnis: 0,00 - 0,05 - 0,09 - 0.13 - 0,21 - 0.30 - 0.40 - 0,45 - 0,54 - 0.59 - 0.70 - 0.75 - 0,85 - 0.96 - 1.07

Wie kann ich alle 0,02 Sekunden haben? (0,00 bis 0,02 - 0,04 bis 0,06 ...)

Antwort

1

Da die documentation Staaten, ist Ihr Rückruf nicht garantiert so häufig genannt werden, wie Sie verlangen:

Wenn das Intervall auf ein sehr kurzes Intervall entspricht In Echtzeit kann der Spieler den Block weniger häufig als angefordert aufrufen. Trotzdem wird der Spieler den Block ausreichend oft aufrufen, damit der Client die Anzeige der aktuellen Zeit in seiner Endbenutzerschnittstelle entsprechend aktualisiert.

Was möchten Sie erreichen, dass Sie so häufig benachrichtigt werden möchten?

+0

Danke. Ich habe diesen Teil der Dokumentation verpasst. Ich musste 2 Arrays vergleichen, um einige Schaltflächen im Video anzuzeigen. Aber ich ändere die Logik und jetzt ist das besser. Ich brauche kein kurzes Intervall mehr. – cvdogan