- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我使用:MPMoviePlayerController
来显示视频。
下面我列出了视频中的拇指列表。按下拇指时,我想使用以下方法跳转到视频中的特定位置:setCurrentPlaybackTime
。
我还有一个计时器根据视频的位置更新所选的拇指:currentPlaybackTime
。
我的问题:当调用:setCurrentPlaybackTime
时,播放器在寻找特定秒数之前一直给出秒数。玩家需要几秒钟才能反射(reflect)出新的秒数。同时,用户的体验很差:按下一个拇指显示它选择了一个显示时间,然后计时器更新到前一个拇指,然后跳回到我选择的拇指。
我尝试使用(在计时器中):
if (moviePlayer.playbackState != MPMoviePlaybackStatePlaying && !(moviePlayer.loadState & MPMovieLoadStatePlaythroughOK)) return;
为了防止计时器在播放器处于显示前一个拇指和新拇指之间的过渡阶段时更新所选拇指,但这似乎不起作用。 “playbackState”和“loadState”似乎是完全不稳定和不可预测的。
最佳答案
为了解决这个问题,这就是我在我的一个项目中实现这种讨厌的状态覆盖的方式。这是令人讨厌和脆弱的,但对我来说已经足够好了。
我使用了两个标志和两个时间间隔;
BOOL seekInProgress_;
BOOL seekRecoveryInProgress_;
NSTimeInterval seekingTowards_;
NSTimeInterval seekingRecoverySince_;
以上所有都应该默认为NO
和0.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/
我使用:MPMoviePlayerController 来显示视频。 下面我列出了视频中的拇指列表。按下拇指时,我想使用以下方法跳转到视频中的特定位置:setCurrentPlaybackTime。
MPMoviePlayerController 我正在播放视频,当我暂停视频时,当我单击按钮时,我想将视频转发一段时间。有谁知道如何转发当前时间的视频?如果是,我可以转发视频的最短时间是多少?就像是毫
我使用 MPMoviePlayer 播放我的视频,我遇到的问题是当用户按下设备的home 按钮时,我保存视频的当前位置,而不是当他再次吃午饭时我希望他从他离开的地方开始,所以我使用 setCurren
我在使用 MPMoviePlayerController 时遇到了一些问题。 我正在尝试设置视频播放时的 currentPlaybackTime(文件源)。这是发生的情况的示例 播放视频 点击按钮跳转
我是一名优秀的程序员,十分优秀!