2010-07-04 4 views
3

SDK 3.1.3에서 문제없이 내 비디오에서 짧은 비디오를 재생하기 위해 MPMoviePlayer를 사용하고있었습니다. SDK 4의 코드를 변경했지만 비디오가 재생되지 않습니다. 나는 검은 화면과 오디오를 얻는다. Apple Dev Center에는 최신 SDK에 대한이 클래스의 샘플 코드가 없습니다. 다음은 내가 사용하고있는 코드입니다.iPhone SDK 4.0의 MPMovieController를 사용할 때의 문제

- (void)viewDidLoad { 

    [super viewDidLoad]; 

     //videoPlayer is a MPMoviePlayerController object defined in the header file of the view controller 

    if (videoPlayer == nil){ 
     NSString * videoPath = [[NSBundle mainBundle] pathForResource:@"myvideo" ofType:@"mp4"]; 
     if (videoPath == NULL){ 
      return; 
     } 
     NSURL * videoURL = [NSURL fileURLWithPath:videoPath]; 

     videoPlayer = [[MPMoviePlayerController alloc] initWithContentURL:videoURL]; 
     videoPlayer.controlStyle = MPMovieControlStyleNone; 
     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playbackFinished:) name:@"MPMoviePlayerPlaybackDidFinishNotification" object:movieController.moviePlayer]; 

     [videoPlayer play]; 
     [videoPlayer setFullscreen:YES]; 
     [self.view addSubview:videoPlayer.view]; 


    } 

} 

위의 결과는 오디오가 검은 색 화면으로 재생되는 결과를 낳습니다. 재생이 끝나면 알림이 올바르게 호출됩니다.

위에서 작동하지 않았다 때, 나는 심지어 다음과 같이 새로운 MPMoviePlayerViewController 클래스를 사용하여 시도 :

- (void)viewDidLoad { 

    [super viewDidLoad]; 
    NSString * videoPath = [[NSBundle mainBundle] pathForResource:@"myvideo" ofType:@"mp4"]; 

    if (videoPath == NULL){ 
     return; 
    } 
    NSURL * videoURL = [NSURL fileURLWithPath:videoPath]; 

     //movieController is an MPMoviePlayerViewController object defined in the header file of view controller 

    movieController = [[MPMoviePlayerViewController alloc] initWithContentURL:videoURL]; 

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playbackFinished:) name:@"MPMoviePlayerPlaybackDidFinishNotification" object:movieController.moviePlayer]; 

    [movieController.moviePlayer setFullscreen:YES]; 
    [movieController.moviePlayer play]; 
    [self presentMoviePlayerViewControllerAnimated:movieController]; 
} 

같은 문제가 지속 - 나는 오디오와 재생의 끝에있는 알림을들을 수라고합니다 예상대로 그러나 나는 비디오 대신에 검은 화면을 보게된다.

동일한 비디오가 iTunes 및 iPod touch의 일반 비디오 재생 목록에서 정상적으로 재생되므로 비디오 인코딩에 문제가 없습니다.

누구든지이 문제를 해결할 수 있습니까?

내가 변경 : - 사전에

덕분에

답변

3

문제가 해결 유사한 문제에 붙어있는 사람들의 이익을 위해,이 솔루션은 다음과 같이 명시 적으로 MPMoviePlayerController의 뷰의 프레임을 만드는 것입니다 선 : 다음

[videoPlayer play]; 

[videoPlayer setFullscreen:YES]; 

[self.view addSubview:videoPlayer.view]; 

:

[videoPlayer prepareToPlay]; 

[videoPlayer play]; 

[self.view addSubview:videoPlayer.view]; 

videoPlayer.view.frame = CGRectMake(0.0, 0.0, 480.0, 320.0); //this is explicitly added and solves the problem