2012-10-23 61 views
3

我感到困惑:如何發揮視頻在iOS6的

MPMoviePlayerViewController和的MPMoviePlayerController

是什麼在iOS6的本地播放視頻的最佳方式?

這是我的代碼

NSURL * url = [NSURL fileURLWithPath: [[NSBundle mainBundle] pathForResource: @ "17" OfType: @ "mov"]]; 

    MoviePlayer = [[MPMoviePlayerViewController alloc] 
        initWithContentURL: url]; 
    [self presentMoviePlayerViewControllerAnimated: MoviePlayer]; 
    [moviePlayer.moviePlayer play]; 
    [[NSNotificationCenter defaultCenter] addObserver: self selector: @ selector (moviePlayerPlaybackStateChanged :) name: MPMoviePlayerPlaybackStateDidChangeNotification object: nil]; 
} 


-(void)moviePlayerPlaybackStateChanged:(NSNotification *)notification { 


} 

回答

8

MPMoviePlayerViewController是用於播放全屏視頻,並主要用於在手機上。

MPMoviePlayerController可以用於嵌入式視頻,即在任何iPad上都不是全屏。您需要在故事板中將您的場景拖到空白視圖中,併爲其指定所需的大小。然後,在代碼中,將電影播放器​​放置在該子視圖中。你的代碼的第一部分應該在viewDidLoad中;

//movieplayer initialization 
NSString *path = [[NSBundle mainBundle] pathForResource:@"videoName" ofType:@"m4v"]; 
NSURL *videoURL = [NSURL fileURLWithPath:path]; 
moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:videoURL]; 
[moviePlayer setControlStyle:MPMovieControlStyleNone]; // for custom controls, for default controls you can leave this line out. 

這部分進入viewWillAppear;

moviePlayer.repeatMode = MPMovieRepeatModeOne; // for looping 
[moviePlayer.view setFrame: self.videoSuper.bounds]; 
[self.videoSuper addSubview: moviePlayer.view]; 
[moviePlayer prepareToPlay]; 
[moviePlayer play]; 

其中videoSuper是故事板中添加的子視圖。務必正確連接它;

//in .h 
@property (weak, nonatomic) IBOutlet UIView *videoSuper; 
+0

我試過這樣做,但由於某種原因它不起作用。我用xib創建了一個單視圖項目,但沒有任何故事板。添加了一個UIView並將其與文件所有者連接起來。我看到的只是一個白色的屏幕,沒有音頻。任何關於我可能做錯了什麼的幫助或建議?有沒有更好的方式來運行視頻,我不知道? – vnchopra

+0

您是否將連接到視圖的插座命名?在我知道很多關於命名約定的知識之前,我寫了這個。我稱之爲videoSuper的應該稱爲videoView或類似的東西,它應該是你的h文件中的一個IBOutlet,它連接到NIB中的視圖。 (我使用故事板,所以細節取決於你。)在故事板中,您可以右鍵單擊故事板中的視圖,然後拖動到聲明屬性的區域中的頭文件,彈出框會給您一個命名的機會。將它命名爲videoView,然後你的控制器將擁有一個你可以在代碼中引用的屬性。 – timquinn

+0

[self.videoView addSubview:moviePlayer.view]; – timquinn