2010-12-11 2 views
1

Cocos2D를 사용하는 응용 프로그램 내에서 MPMoviePlayerController를 사용하여 영화를 재생하고 있습니다. 그러나 영화가 실행되면 영화의 오디오의 마지막 2/3 만 재생됩니다. 영화가 첫 번째 3 분 동안 침묵하지 않았다는 것이 아닙니다. 동영상 재생이 시작되면 동영상 재생 속도의 1/3을 오디오 재생으로 시작합니다. 즉, 오디오와 비디오가 동기화되지 않습니다.MPMoviePlayerController 비디오 및 오디오가 동기화되지 않았습니다.

iOS 4.2를 사용하고 있으며 최신 xCode로 업그레이드했습니다. 아래는 내가 사용하고있는 코드입니다. 누군가 이것이 왜 일어나고 있는지 말해 줄 수 있습니까?

- (id) init 
{ 
    self = [super init]; 
    if (self != nil) 
    { 
     NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle]  
          pathForResource:@"SomeMovie" ofType:@"m4v"]]; 
     MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] 
          initWithContentURL:url]; 
     // Register to receive a notification when the movie has finished playing. 
     [[NSNotificationCenter defaultCenter] addObserver:self 
            selector:@selector(PlayBackDidFinish:)   
             name:MPMoviePlayerPlaybackDidFinishNotification 
               object:moviePlayer]; 

     moviePlayer.controlStyle = MPMovieControlStyleNone; 
     moviePlayer.shouldAutoplay = YES; 
     [moviePlayer.view setTransform:CGAffineTransformMakeRotation((float)M_PI_2)]; 
     [moviePlayer.view setFrame:[[UIScreen mainScreen] bounds]]; 
     [[[CCDirector sharedDirector] openGLView] addSubview:moviePlayer.view]; 
    } 
    return self; 
} 

- (void) PlayBackDidFinish:(NSNotification *)notification 
{ 
    MPMoviePlayerController *moviePlayer = [notification object]; 
       [[NSNotificationCenter defaultCenter] removeObserver:self 
            name:MPMoviePlayerPlaybackDidFinishNotification 
               object:moviePlayer]; 

    [moviePlayer.view removeFromSuperview]; 

    [moviePlayer release]; 
} 

답변

0

이 동영상을 다른 앱 (Quicktime 플레이어 등)에서 재생하여 손상되지 않았는지 확인 했습니까?

+0

예. iTunes에서 재생했고 예상대로 작동했습니다. –

2

똑같은 문제를 겪은 후에 나는 좀 더 깊이 파고 다른 해결책을 찾았습니다. 내 문제는 약간 달랐다. 나는 mid-app라는 영화 플레이어를 사용하고 있었기 때문에 Cocos2D가 사용하기 전에 영화 플레이어를 사용하라는 Nathan의 제안은 효과가 없었습니다.

MPMoviePlayerController는 기본적으로 YES로 설정된 useApplicationAudioSession이라는이 수수께끼의 속성을 가지고있는 것으로 나타났습니다. 이 속성을 NO로 설정하면 무비 재생 모드와 시스템 제공 오디오 세션이 무비 플레이어에서 사용됩니다. " (예의 Apple docs), 그리고 우연히 지연 문제를 수정합니다.

오디오 용 CocosDenshion을 사용하며 CocosDenshion에서 정의되고 사용되는 응용 프로그램 오디오 세션은 영화 플레이어에서 요구하는 오디오 세션과 호환되지 않습니다. 이것은 전체 추측이지만, 그것은 무슨 일이 진행되고 있는지에 관한 이론 일 수 있습니다.

시스템 제공 오디오 세션을 사용하면 비디오 재생이 갑자기 동기화됩니다.

관련 문제