gpt4 book ai didi

ios - AVQueuePlayer 回退到项目开头时的通知

转载 作者:行者123 更新时间:2023-12-01 17:00:33 27 4
gpt4 key购买 nike

我有 5 AVPlayerItems在我的AVQueuePlayer ,设置为 AVPlayerActionAtItemEndAdvance .我在我的 UI 上点击播放,播放第一个,第二个,然后开始播放第三个。然后我按下倒带按钮。我想要发生的是第三个视频倒回到它的开头,然后我收到一个允许我停止的通知。我看到的是我的状态为准备好播放第 4 个项目,然后是当前项目更改为第 4 个项目 - 然后第 4 个项目播放。

为什么第 3 项倒回到起点后第 4 项变为当前项

是我可以阻止它以将播放器设置为不自动前进( AVPlayerActionAtItemEndPause )的唯一方法,观察每个项目的结尾,并希望我收到关于倒带第三个项目的“播放结束”通知以及当它自然地播放到结尾时。然后在我的最终观察者代码中,我可以检查播放器的速率,如果倒带,则不前进到下一个项目。

最佳答案

我处理这个问题的方法是在开始寻找代码中,设置 actionAtItemEndAVPlayerActionAtItemEndNone ,然后将其重置回 AVPlayerActionAtItemEndAdvance当寻求结束时。在 iOS6 上,似乎可以在轨道的开头进行搜索。在“结束搜索”代码中,我在开始正常播放之前重置了速率和当前时间。

以下方法由长按手势识别器调用。

- (IBAction)fastRewind:(id)sender
{
UIGestureRecognizer *recog = (UIGestureRecognizer*)sender;
if (recog.state == UIGestureRecognizerStateBegan) {
if (_player.rate == 1) {
NSLog(@"fastRewind begin\n%@", sender);
_player.actionAtItemEnd = AVPlayerActionAtItemEndNone;
_player.rate = -2;
}
} else if (recog.state != UIGestureRecognizerStateChanged) {
// Ended/Canceled
NSLog(@"fastRewind end\n%@", sender);
if (_player.rate < 0) {
_player.rate = 0;
if (CMTimeGetSeconds(_player.currentTime) < 0) {
[_player seekToTime:CMTimeMake(0, 1)];
}
_player.actionAtItemEnd = AVPlayerActionAtItemEndAdvance;
_player.rate = 1;
}
}
}

如果保持较长时间,人们可能希望加快搜索速度。

关于ios - AVQueuePlayer 回退到项目开头时的通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7282360/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com