2010-03-30 41 views
3

我試圖在iPad上使用MPMoviePlayerController類。iPad上的MPMoviePlayerController問題

這裏是我的代碼:

multimediaPlayer = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileURLWithPath:path]];    
multimediaPlayer.movieControlMode = MPMovieControlModeDefault; 
[multimediaPlayer play]; 

,這工作得非常好於iPhone,但它並不想在iPad上運行。我聽到視頻的聲音,但電影不播放。 爲什麼它可能是這個問題?

+1

好,好,我發現,這樣的:已被棄用。解決方案是multimediaPlayer.controlStyle = MPMovieControlStyleDefault;但它仍然不起作用。 – 2010-03-30 14:56:38

+0

這是一個答案,應該發佈爲答案..你可以稍後編輯你的答案,因爲你有更多的信息 – 2010-04-05 04:00:43

+0

對不起,現在我做到了。 :P – 2010-06-29 11:54:28

回答

4

下面的代碼的工作非常適合我的申請。希望它會爲你做同樣的事情。 最主要的是設置mpMoviePlayerController幀的幀。如果你不這樣做,它幾乎不會顯示視頻。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  
    [[UIApplication sharedApplication] setStatusBarHidden:YES]; 

    // Register to receive a notification when the movie has finished playing. 
    [[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(moviePlayBackDidFinish:) 
               name:MPMoviePlayerPlaybackDidFinishNotification 
               object:nil]; 

    // Register to receive a notification when the movie scaling mode has changed. 
    [[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(movieScalingModeDidChange:) 
               name:MPMoviePlayerScalingModeDidChangeNotification 
               object:nil]; 
    kDomain = [NSString stringWithString:@"http://www.virtua-book.com/"]; 
    [navigationController setNavigationBarHidden:YES]; 

    NSURL *ur=[[NSURL alloc] initFileURLWithPath:[[NSBundle mainBundle] pathForResource:@"IPAD" ofType:@"mp4"]]; 
    mpMCtr=[[MPMoviePlayerController alloc] initWithContentURL:ur]; 
    mpMCtr.fullscreen=YES; 
    [mpMCtr setScalingMode:MPMovieScalingModeFill]; 
    [mpMCtr setShouldAutoplay:YES]; 
    [mpMCtr setControlStyle:MPMovieControlStyleNone]; 
    [mpMCtr setMovieSourceType:MPMovieSourceTypeFile]; 
    mpMCtr.view.frame = CGRectMake(0, 0, 1024, 768); 
    [mpMCtr setRepeatMode:MPMovieRepeatModeNone]; 

    [mpMCtr play]; 

    [ur release]; 

    // Override point for customization after app launch  
    [navigationController.view addSubview:mpMCtr.view]; 
    [window addSubview:[navigationController view]]; 
    [window makeKeyAndVisible]; 

    return YES; 
} 


// Notification called when the movie finished playing. 
- (void) moviePlayBackDidFinish:(NSNotification*)notification 
{ 
    [mpMCtr.view removeFromSuperview]; 
} 
+0

感謝您糾正我。 – 2010-06-26 19:15:56

0

好吧,夥計們,我發現這個:已經被棄用了。

解決方案是multimediaPlayer.controlStyle = MPMovieControlStyleDefault;但它仍然無法正常工作。

+1

您是否爲您的Q獲得答案?我也陷入了同樣的事情。 – wolverine 2010-04-09 09:07:48

+0

如果您有答案,您可以與我們分享? – harshalb 2010-06-23 07:32:03

+0

您必須將MPMoviePlayerController的視圖添加到您的視圖中,但是如果仔細閱讀新文檔,您會發現這是一個很大的優勢。我希望這可以幫助你。 – 2010-06-24 12:14:12

0
MPMoviePlayerViewController *mp = [[MPMoviePlayerViewController alloc]initWithContentURL:movieURL]; 
mp.moviePlayer.controlStyle = 2; 
1

東西沿着這些線路可能是你想要做什麼:

MPMoviePlayerViewController *mpvc = [[MPMoviePlayerViewController alloc] initWithContentUrl:movieUrl]; 
[self presentMoviePlayerViewController:mpvc]; 
1

要解決向後/向前(或上一個/下一個)按鈕,你應該執行以下操作:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayerPlaybackStateDidChange:) name:MPMoviePlayerPlaybackStateDidChangeNotification object:nil]; 

... 

- (void) moviePlayerPlaybackStateDidChange: (NSNotification *) notification { 
if (moviePlayer.playbackState == MPMoviePlaybackStateStopped) { 
    [moviePlayer setContentURL:[moviePlayer contentURL]]; 
    [moviePlayer play]; 
} 
}