2017-09-26 4 views
0

ユーザーがビデオを再生しているときに、ユーザーが一定の割合で再生したときを把握しようとしています。AVPlayerが総再生時間の特定のパーセンテージに達したときを検出しますか?

たとえば、ユーザーが動画を再生していて、ユーザーが50%再生したときに何らかの表示をしたいとします。

もっと明確にするには、50%が発生したときに「リスナー/オブザーバー」を設定する方法がありますか?観察する

答えて

2

ベストな方法は、おそらくdocsからperiodTimeObserverに使用するために、次のようになります。

func addPeriodicTimeObserver() { 
    // Invoke callback every half second 
    let interval = CMTime(seconds: 0.5, 
          preferredTimescale: CMTimeScale(NSEC_PER_SEC)) 
    // Queue on which to invoke the callback 
    let mainQueue = DispatchQueue.main 
    // Add time observer 
    timeObserverToken = 
     player.addPeriodicTimeObserver(forInterval: interval, queue: mainQueue) { 
      [weak self] time in 
      // Check whether the time has reached half of duration 
    } 
} 
+0

感謝。 @rashwanLが答えたところで、periodTimeObserverを使用する利点はありますか? – Changerrs

+0

@Changerrs「ビデオのタイムティック」が無効になる可能性があるため、ビデオの専門家ではありませんが、内部実装の方がより良い方法がわかりました作成したカスタムタイマーと同期します。 – kgaidis

関連する問題