2017-03-29 4 views
0

アップルのtvos AVPlayerViewControllerでは、シリリモコンの右端/左端を押し下げて早送り/巻き戻しができます。これを追跡するデリゲートメソッドはありますか?私は以下の方法に遭遇しましたが、それはドラッグ/ドロップを追跡するのに十分なだけ、または10秒間フォワードを追求するには十分です。 avplayeritems currentTimeのプロパティを追跡するのに足りない、早送りを追跡する他の方法はありますか?早送り/早戻しのトラッキング

- (void)playerViewController:(AVPlayerViewController *)playerViewController 
willResumePlaybackAfterUserNavigatedFromTime:(CMTime)oldTime 
         toTime:(CMTime)targetTime 

答えて

0

私が知る限り、その情報をAVPlayerViewControllerDelegateから取得する方法はありません。

しかし、AVPlayerViewControllerがその時点でAVPlayerの注入されたインスタンスを内部的に使用しているため、AVPlayerのカスタムサブクラスを作成してその使用状況を追跡できます。

class ViewController: AVPlayerViewController { 

    override func viewDidAppear(_ animated: Bool) { 
     super.viewDidAppear(animated) 
     play(stream: URL(string: "https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4")!) 
    } 

    // MARK: - Private 

    private func play(stream: URL) { 
     let asset = AVAsset(url: stream) 
     let playetItem = AVPlayerItem(asset: asset) 
     player = MyPlayer(playerItem: playetItem) 
     player?.play() 
    } 
} 


class MyPlayer: AVPlayer { 

    override func seek(to time: CMTime, toleranceBefore: CMTime, toleranceAfter: CMTime, completionHandler: @escaping (Bool) -> Void) { 
     super.seek(to: time, toleranceBefore: toleranceBefore, toleranceAfter: toleranceAfter, completionHandler: completionHandler) 

     print("The user did seek to: \(time)") 
    } 
} 
+0

これは、Siri Remoteの左上または右上のボタンを押し続けることによって達成される早送りおよび巻き戻しでは機能しません。 –

関連する問題