我用MPMoviePlayer发挥我的视频,我的问题是,当用户按设备的主屏幕按钮,我保存视频的当前位置,比他吃午饭应用程序再次,我想他从他离开的地方开始,所以我用setCurrentPlaybackTime功能,它完美的作品在iOS 5中 ,但不是在的iOS 5.1在视频从头开始。
是否有任何身体有这样的问题的解决方案?
我用MPMoviePlayer发挥我的视频,我的问题是,当用户按设备的主屏幕按钮,我保存视频的当前位置,比他吃午饭应用程序再次,我想他从他离开的地方开始,所以我用setCurrentPlaybackTime功能,它完美的作品在iOS 5中 ,但不是在的iOS 5.1在视频从头开始。
是否有任何身体有这样的问题的解决方案?
我的问题是解决了,我会解释一下我到目前为止已经完成。
当我找不到这种行为的解决方案/解释(我觉得很奇怪),我开始做很多和批次记录的,所以我注意到的是,当我记录当前位置我总是得到(在iOS版5.1)
currentPlaybackTime = nan
但在iOS 5中我得到了正常值为0.00000
所以我做了一个定时器(重演)当前时间记录每一次,所以我注意到,它从南到改变0.00000一段时间后,
我得出的结论是,我需要设置PlaybackTime之前等待一个位(不明白为什么),所以它是,等待1 毫秒 (1/1000 秒 )后,和它的作品。
你尝试使用seekToTime(仅AvPlayer),而不是setCurrentPlaybackTime?
如下建议:
为什么的MPMoviePlayerController setCurrentPlaybackTime去错误的时间?
注意:此解决方案是AvPlayer而非MPMoviePlayer(即使辛苦也没有在上市环节表示)。 不过,我想切换到AvPlayer之前等待的解答。
我们应该设置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;
}
}
}