0

我正在制作一个 iphone 应用程序,在该应用程序中从 url 服务器播放视频它工作正常,但我想说视频是 3 分钟或 4 分钟,用户观看视频的时间就像播放视频 1 分钟一样停止。

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

3 回答 3

1

我认为,您可以从NSTimer呈现MPMoviePlayerViewController和收听通知的时间开始,MPMoviePlayerPlaybackDidFinishNotification或者MPMoviePlayerPlaybackDidFinishReasonUserInfoKey计算时间。

编辑

最好的方法是使用通知访问 MPMediaPlayback 的currentPlaybackTime属性MPMoviePlayerPlaybackDidFinishNotification

这会给你实际的时间。在您的情况下,您可以访问此属性

  NSTimeInterval time =  mp.moviePlayer.currentPlaybackTime;
于 2013-12-17T11:08:10.393 回答
0

如果您检查参考手册是否MPMoviePlayerController符合MPMediaPlayback协议

所以MPMediaPlayback协议包含属性

@property(nonatomic) NSTimeInterval currentPlaybackTime

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

示例

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

NSTimeInterval timeInterval = player.currentPlaybackTime;

链接:

MPMoviePlayer控制器

MP媒体播放

希望这可以帮助!

于 2013-12-17T11:15:58.157 回答
0

您可以使用通知中心:

1- 在 vi​​ewDidLoad 上:

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

2-实现这个方法(秒是一个整数):

- (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++;
}
于 2013-12-17T11:23:24.147 回答