我使用MPMoviePlayer播放我的视频,问题是当用户按下设备的home按钮时,我保存视频的当前位置,而不是当他再次午餐应用程序时,我希望他从他离开的地方开始,所以我使用了iOS 5,它在iOS 5中工作得很好,但在从视频开始的iOS 5.1中却没有。
有没有人有解决这种问题的办法?
发布于 2012-05-18 12:21:01
我的问题解决了,我会解释我到目前为止所做的事情。
当我找不到这个行为的解决方案/解释(我觉得很奇怪)时,我就开始做大量的日志记录,所以我注意到,当我记录当前的位置时,我总是得到(在iOS 5.1中)。
currentPlaybackTime = nan但在iOS 5中,我得到了一个正常值为0.00000
因此,我制作了一个计时器(它自己重复)来记录当前的 time ,因此我注意到它在一段时间后从nan变为0.00000。
我得出的结论是,在设置PlaybackTime之前,我需要等待一点(不明白为什么),在等待了1 ms (1/1000 s)之后,就可以了。
发布于 2012-05-17 13:24:55
您试过使用seekToTime (仅限AvPlayer)而不是setCurrentPlaybackTime吗?
如下所示:
Why does MPMoviePlayerController setCurrentPlaybackTime goes to the wrong time?
注意:这个解决方案是针对AvPlayer的,而不是针对MPMoviePlayer的(即使很难,它没有在列出的链接中显示)。但是在切换到AvPlayer之前,我会等待更多的答案。
发布于 2014-07-25 11:00:39
我们应该在获得currentPlaybackTime通知之后设置MPMoviePlayerLoadStateDidChangeNotification。
要知道是否加载了moviePLayer,首先需要注册MPMoviePlayerLoadStateDidChangeNotification
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(movieLoadStateDidChange:) name:MPMoviePlayerLoadStateDidChangeNotification object:nil];加载电影播放器后,将调用movieLoadStateDidChange:,然后检查MPMovieLoadStatePlaythroughOK加载状态并设置currentPlaybackTime。
- (void)movieLoadStateDidChange:(NSNotification *)notification
{
MPMoviePlayerController *player = notification.object;
MPMovieLoadState loadState = player.loadState;
/* Enough data has been buffered for playback to continue uninterrupted. */
if (loadState & MPMovieLoadStatePlaythroughOK)
{
//should be called only once , so using self.videoLoaded - only for first time movie loaded , if required. This function wil be called multiple times after stalled
if(!self.videoLoaded)
{
self.moviePlayerController.currentPlaybackTime = self.currentPlaybackTime;
self.videoLoaded = YES;
}
}
}https://stackoverflow.com/questions/10635926
复制相似问题