2

我使用 AVPlayer 来实现自定义播放器。

一些视频 playerItem 提供了当前时间和错误的持续时间。搜索时间后使用幻灯片多次搜索时间。调用API
寻零时,有些视频无法精确寻到。

      [self.player seekToTime:CMTimeMakeWithSeconds(time, NSEC_PER_SEC)
      toleranceBefore:CMTimeMake(1, 1)
      toleranceAfter:CMTimeMake(1, 1)
      completionHandler:^(BOOL finished) {
         if (finished) {
             IVCLogV(@"seek finish!");
         }
         else
         {
             IVCLogV(@"seek interrupted");
         }
         if (completionHandle) {
             completionHandle(finished);
         }
     }];

我根据 mediaTime.timeScale 更改代码。现在我发现视频流在几次播放后改变了视频持续时间和当前时间。

4

1 回答 1

2

确保正在播放的媒体的时间刻度与您的时间刻度相匹配。我可以看到您使用 NSEC_PER_SEC 作为时间刻度。您可能必须将您的 CMTime 输入缩放到 seelTo 方法。

CMTime timeAccordingToMediaTimescale = CMTimeConvertScale(time, mediaTime.timescale, CMTimeRoundingMethod);
于 2013-04-19T12:44:16.930 回答