2013-12-17 35 views
0

我正在制作一个iphone应用程序,其中从url服务器播放视频的效果很好,但我想让我们说视频是3分钟或4分钟用户观看视频的时间它播放视频1分钟,并同样停止。如何获得在iOS应用程序中观看的持续时间视频

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]; 

回答

1

我想,你可以提出MPMoviePlayerViewController的时间开始NSTimer,听通知MPMoviePlayerPlaybackDidFinishNotificationMPMoviePlayerPlaybackDidFinishReasonUserInfoKey和计算时间。

编辑

最好的办法是用MPMoviePlayerPlaybackDidFinishNotification通知

这会给你的实际时间来访问MPMediaPlayback的currentPlaybackTime财产。 你的情况,你可以访问此属性为

NSTimeInterval time = mp.moviePlayer.currentPlaybackTime; 
+0

如果什么互联网是缓慢和2 mintues视频拿5 mintues发挥 – user3110080

+0

我编辑我的答案,请检查并让我知道。 – Suryakant

0

如果妳检查的参考手册MPMoviePlayerController符合MPMediaPlayback协议

所以MPMediaPlayback协议包含属性

@property(nonatomic) NSTimeInterval currentPlaybackTime 

的当前位置播放头。 (必填)

MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:movieURL]; 
... 

NSTimeInterval timeInterval = player.currentPlaybackTime; 

链接:

MPMoviePlayerController

MPMediaPlayback

希望这有助于!

+0

如何使用这个我正在使用这个但不工作 – user3110080

+0

我已经添加了一个例子。 – iCoder

0

可以使用通知中心:

1-论viewDidLoad中:

[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(playbackStateDidChange:) 
              name:@"MPAVControllerPlaybackStateChangedNotification" 
              object:nil]; 

2-实现此方法(秒是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(视频开始) MPAVControllerNew StateParameter == 1(视频停止) MPAVControllerNewStateParameter == 0(视频结束或者按 “完成”)

3-最后实现此方法:

-(void) increaseSeconds { 
    seconds++; 
} 
相关问题