我正在制作一个iphone应用程序,其中从url服务器播放视频它工作正常,但我想让我们说视频是3分钟或4分钟用户观看视频多少时间,因为它播放视频1分钟和同样停止。< / p>
NSURL *url = [NSURL URLWithString:newString];
NSLog(@"New File name is %@",newString);
mp = [[MPMoviePlayerViewController alloc] initWithContentURL:url];
[[mp moviePlayer] prepareToPlay];
[[mp moviePlayer] setUseApplicationAudioSession:NO];
[[mp moviePlayer] setShouldAutoplay:YES];
[[mp moviePlayer] setControlStyle:2];
//[[mp moviePlayer] setRepeatMode:MPMovieRepeatModeOne];
[self presentMoviePlayerViewControllerAnimated:mp];
答案 0 :(得分:1)
我认为,您可以在提交NSTimer
时启动MPMoviePlayerViewController
并听取通知MPMoviePlayerPlaybackDidFinishNotification
或MPMoviePlayerPlaybackDidFinishReasonUserInfoKey
并计算时间。
编辑
最好的方法是使用currentPlaybackTime
通知访问MPMediaPlayback的MPMoviePlayerPlaybackDidFinishNotification
媒体资源
这会给你实际的时间。 在您的情况下,您可以访问此属性
NSTimeInterval time = mp.moviePlayer.currentPlaybackTime;
答案 1 :(得分:0)
如果您检查参考手册MPMoviePlayerController
是否符合MPMediaPlayback
协议
所以MPMediaPlayback
协议包含属性
@property(nonatomic) NSTimeInterval currentPlaybackTime
播放头的当前位置。 (所需的)
示例强>:
MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:movieURL];
...
NSTimeInterval timeInterval = player.currentPlaybackTime;
链接:
希望这有帮助!
答案 2 :(得分:0)
您可以使用通知中心:
1-在viewDidLoad上:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(playbackStateDidChange:)
name:@"MPAVControllerPlaybackStateChangedNotification"
object:nil];
2-实现此方法(seconds为int):
- (void)playbackStateDidChange:(NSNotification *)note {
NSLog(@"note.name=%@ state=%d", note.name, [[note.userInfo objectForKey:@"MPAVControllerNewStateParameter"] intValue]);
if ([[note.userInfo objectForKey:@"MPAVControllerNewStateParameter"] intValue] == 2) {
timer= [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(increaseSeconds) userInfo:nil repeats:YES];
NSLog(@"seconds: %i", seconds);
} else if([[note.userInfo objectForKey:@"MPAVControllerNewStateParameter"] intValue] == 1){
[timer invalidate];
NSLog(@"seconds: %i", seconds);
} else if([[note.userInfo objectForKey:@"MPAVControllerNewStateParameter"] intValue] == 0){
NSLog(@"Total watched: %i", seconds);
[self dismissMoviePlayerViewControllerAnimated];
}
}
其中MPAVControllerNewStateParameter == 2(视频开始) MPAVControllerNewStateParameter == 1(视频已停止) MPAVControllerNewStateParameter == 0(视频已完成或按下“完成”)
3-最后实现这个方法:
-(void) increaseSeconds {
seconds++;
}