0

私は、URLサーバーからビデオを再生するiPhoneアプリを作成していますが、ビデオが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て通知を聞いたりMPMoviePlayerPlaybackDidFinishNotificationMPMoviePlayerPlaybackDidFinishReasonUserInfoKey時間を計算したりできると思います。

編集

最善の方法は、通知を使用してMPMediaPlayback のcurrentPlaybackTimeプロパティにアクセスすることですMPMoviePlayerPlaybackDidFinishNotification

これにより、実際の時間が得られます。あなたの場合、このプロパティに次のようにアクセスできます

  NSTimeInterval time =  mp.moviePlayer.currentPlaybackTime;
于 2013-12-17T11:08:10.393 に答える
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 (ビデオ開始) MPAVControllerNewStateParameter == 1 (ビデオ停止) MPAVControllerNewStateParameter == 0 (ビデオ終了または「完了」を押す)

3- 最後に、このメソッドを実装します。

-(void) increaseSeconds {
    seconds++;
}
于 2013-12-17T11:23:24.147 に答える