gpt4 book ai didi

ios - setCurrentPlaybackTime 的奇怪行为

转载 作者:可可西里 更新时间:2023-11-01 05:54:44 28 4
gpt4 key购买 nike

我使用:MPMoviePlayerController 来显示视频。

下面我列出了视频中的拇指列表。按下拇指时,我想使用以下方法跳转到视频中的特定位置:setCurrentPlaybackTime

我还有一个计时器根据视频的位置更新所选的拇指:currentPlaybackTime

我的问题:当调用:setCurrentPlaybackTime 时,播放器在寻找特定秒数之前一直给出秒数。玩家需要几秒钟才能反射(reflect)出新的秒数。同时,用户的体验很差:按下一个拇指显示它选择了一个显示时间,然后计时器更新到前一个拇指,然后跳回到我选择的拇指。

我尝试使用(在计时器中):

if (moviePlayer.playbackState != MPMoviePlaybackStatePlaying && !(moviePlayer.loadState & MPMovieLoadStatePlaythroughOK)) return;

为了防止计时器在播放器处于显示前一个拇指和新拇指之间的过渡阶段时更新所选拇指,但这似乎不起作用。 “playbackState”和“loadState”似乎是完全不稳定和不可预测的。

最佳答案

为了解决这个问题,这就是我在我的一个项目中实现这种讨厌的状态覆盖的方式。这是令人讨厌和脆弱的,但对我来说已经足够好了。

我使用了两个标志和两个时间间隔;

BOOL seekInProgress_; 
BOOL seekRecoveryInProgress_;
NSTimeInterval seekingTowards_;
NSTimeInterval seekingRecoverySince_;

以上所有都应该默认为NO0.0

启动搜索时:

//are we supposed to seek?
if (movieController_.currentPlaybackTime != seekToTime)
{ //yes->
movieController_.currentPlaybackTime = seekToTime;
seekingTowards_ = seekToTime;
seekInProgress_ = YES;
}

在定时器回调中:

//are we currently seeking?
if (seekInProgress_)
{ //yes->did the playback-time change since the seeking has been triggered?
if (seekingTowards_ != movieController_.currentPlaybackTime)
{ //yes->we are now in seek-recovery state
seekingRecoverySince_ = movieController_.currentPlaybackTime;
seekRecoveryInProgress_ = YES;
seekInProgress_ = NO;
seekingTowards_ = 0.0;
}
}
//are we currently recovering from seeking?
else if (seekRecoveryInProgress_)
{ //yes->did the playback-time change since the seeking-recovery has been triggered?
if (seekingRecoverySince_ != movieController_.currentPlaybackTime)
{ //yes->seek recovery done!
seekRecoveryInProgress_ = NO;
seekingRecoverySince_ = 0.0;
}
}

最后,MPMoviePlayerController 根本不适合这种“微管理”。在各种情况下,我不得不投入至少六个标志来覆盖状态,我绝不会建议在其他项目中重复这一点。达到此级别后,考虑改用 AVPlayer 可能是个好主意。

关于ios - setCurrentPlaybackTime 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20830875/

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