2010-07-04 39 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