具有 hls url 的 AVPlayerItem 无法执行 forward/backward

AVPlayerItem with hls url can't step forward/backward

我有一个 hls url 可以在我的 avplayer 中播放,但我无法使用 [playerItem stepByCount:] 方法。当我调用它时,它什么也没做。

此外,如果我调用 [playerItem canStepBackward]),它总是 returns 错误。当我播放 hls 流时,是否有其他方法必须向前和向后移动?

我的设置是:

AVURLAsset *asset = [AVURLAsset URLAssetWithURL:_URL options:nil];
self.playerItem = [AVPlayerItem playerItemWithAsset:asset];
[self.player replaceCurrentItemWithPlayerItem:self.playerItem];

// later on...
 AVPlayerItem *playerItem = self.player.currentItem;
  if ([playerItem canStepBackward]) {
    if ([self isPlaying]) {
      [self.player pause];
    }
    [playerItem stepByCount:-1];
  }

当我使用 mp4 时,这一切都完美无缺,但是 hls canStepBackward 总是 returns false,如果我忽略它并只是调用 [playerItem stepByCount:-1];,它什么都不做。

如果您的播放器项目不支持步进 backward/forward 您可以简单地使用 seek AVPlayer 的方法用于此目的,例如:

// Step forward for 1 sec
player.seek(to: CMTime(seconds: player.currentTime().seconds + 1, preferredTimescale: CMTimeScale(NSEC_PER_SEC)))