我使用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更改了代码。现在,我发现视频流在几次播放后已经改变了视频持续时间和当前时间。
答案 0 :(得分:2)
确保正在播放的媒体的时间刻度与您的时间刻度匹配。我可以看到你使用NSEC_PER_SEC作为时间刻度。您可能必须将CMTime输入缩放到seelTo方法。
CMTime timeAccordingToMediaTimescale = CMTimeConvertScale(time, mediaTime.timescale, CMTimeRoundingMethod);