2013-04-19 4 views
0

일치하는 동영상을 재생하려면 MPMoviePlayerController와 함께 이미지 일치 자 SDK를 사용하고 있습니다.MPMoviePlayerController가 비디오를 재생하지 않습니다.

NSLog 비디오는 처리되지만 재생되지 않습니다. 여기

코드에서 prepareToPlay 추가 file`

#import "ViewController.h" 

@interface ViewController() 

@end 

@implementation ViewController 
@synthesize moviePlayer; 
- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    _cvView = [[ImageMatcher alloc] initWithAppKey:@"apikey" useDefaultCamera:TRUE]; 
    _cvView.matcherDelegate = self; 
    [_cvView start]; 
    [_cvView setEnableMedianFilter:YES]; 
    [_cvView setImagePoolMinimumRating:0]; 
    [_cvView setMatchMode:matcher_mode_All]; 
    bool value = [_cvView addImage:[UIImage imageNamed:@"pic2.jpeg"] withUniqeID:[NSNumber numberWithInt:20]]; 
} 
-(void) viewDidAppear:(BOOL)animated 
{ 
    [self presentViewController:_cvView animated:YES completion:nil]; 
} 
-(void) imageRecognitionResult:(int)uId 
{ 
    if (uId == 20) { 
     [self startPlayingVideo2:nil]; 
     NSLog(@"ID = %d",uId); 
    } 
} 
- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
} 
-(void) startPlayingVideo1:(id)paramSender{ 
    NSLog(@"function startPlayingVideo make"); 
    NSBundle *mainBundle = [NSBundle mainBundle]; 
    NSString *urlAsString = [mainBundle pathForResource:@"test1" ofType:@"mp4"]; 
    NSURL *url = [NSURL fileURLWithPath:urlAsString]; 
    if(self.moviePlayer != nil){ 
     NSLog(@"if 1 make"); 
     [self stopPlayingVideo:nil]; 
    } 
    self.moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url]; 
    if(self.moviePlayer != nil){ 
     NSLog(@"if 2 make"); 
     [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(videoHasFinishedPlaying:) name:MPMoviePlayerPlaybackDidFinishNotification object:self.moviePlayer]; 
     moviePlayer.view.frame = CGRectMake(0, 0, 1024, 760); 
     [self.view addSubview:self.moviePlayer.view]; 
     [self.moviePlayer setFullscreen:YES animated:YES]; 
     [self.moviePlayer play]; 
    }else{ 
     NSLog(@"fail"); 
    } 
} 
-(void) startPlayingVideo2:(id)paramSender{ 
    NSLog(@"function startPlayingVideo make"); 
    NSBundle *mainBundle = [NSBundle mainBundle]; 
    NSString *urlAsString = [mainBundle pathForResource:@"sample_mpeg4" ofType:@"mp4"]; 
    NSURL *url = [NSURL fileURLWithPath:urlAsString]; 
    if(self.moviePlayer != nil){ 
     NSLog(@"if 1 make"); 
     [self stopPlayingVideo:nil]; 
    } 
    self.moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url]; 
    if(self.moviePlayer != nil){ 
     NSLog(@"if 2 make"); 
     [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(videoHasFinishedPlaying:) name:MPMoviePlayerPlaybackDidFinishNotification object:self.moviePlayer]; 
     moviePlayer.view.frame = CGRectMake(0, 0, 1024, 760); 
     [self.view addSubview:self.moviePlayer.view]; 
     [self.moviePlayer setFullscreen:YES animated:YES]; 
     [self.moviePlayer play]; 
    }else{ 
     NSLog(@"fail"); 
    } 
} 
-(void) stopPlayingVideo:(id)paramSender{ 
    if (self.moviePlayer != nil) { 
     NSLog(@"stopPlayingVideo on"); 
     [[NSNotificationCenter defaultCenter]removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:self.moviePlayer]; 
     [self.moviePlayer stop]; 
     if([self.moviePlayer.view.superview isEqual:self.view]){ 
      [self.moviePlayer.view removeFromSuperview]; 
     } 
    } 
} 
-(void) videoHasFinishedPlaying:(NSNotification *)paramNotification{ 
    NSNumber *reason = [paramNotification.userInfo valueForKey:MPMoviePlayerPlaybackDidFinishReasonUserInfoKey]; 
    if (reason != nil) { 
     NSInteger reasonAsInteger = [reason integerValue]; 
     switch (reasonAsInteger){ 
      case MPMovieFinishReasonPlaybackEnded:{ 
       NSLog(@"MPMovieFinishReasonPlaybackEnded"); 
       break; 
      } 
      case MPMovieFinishReasonPlaybackError:{ 
       NSLog(@"MPMovieFinishReasonPlaybackError"); 
       break; 
      } 
      case MPMovieFinishReasonUserExited:{ 
       NSLog(@"MPMovieFinishReasonUserExited"); 
       break; 
      } 
     } 
     NSLog(@"finish reason = %ld", (long)reasonAsInteger); 
     [self stopPlayingVideo:nil]; 
    } 
} 
@end 
` 

답변

2

하는 .m (재생을위한 동영상 플레이어를 준비합니다. (필수)) '

[self.moviePlayer prepareToPlay]; 
[self.moviePlayer play]; 

를위한 새로운 동영상 플레이어를 준비하려면 MPMediaPlayback Protocol Reference에 설명 된대로 prepareToPlay 메소드를 호출하십시오.

+0

나는 놀이 전에 작동하지 않습니다. 여전히 카메라 모드의 비디오 플레이어는 팝업되지 않습니다. 이 아이디어가 있습니까? – user2299010

+0

어디에서이 메서드를 호출할까요? 'startPlayingVideo1'도 왜 viewDidAppear에 새 viewcontroller를 추가하고 있습니까? 당신이 이미 새로운 viewCOntroller를 추가한다면이 클래스에서 비디오가 어떻게 재생 될까요? – nsgulliver

+0

startPlayingVideo1을 호출하지 않고 startPlayingVideo2로 테스트합니다. 그리고 viewDidAppear 난 그냥 따라 SDK를 자습서 추가 할 수 있습니다. – user2299010

관련 문제