具有 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)))
我有一个 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)))