2010-07-04 17 views
3

我正在使用MPMoviePlayer在我的應用程序中播放短視頻,而在SDK 3.1.3中沒有任何問題。我對SDK 4中的代碼進行了更改,但視頻未播放。我只是得到一個黑色的屏幕和音頻。 Apple開發人員中心沒有針對最新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