IOS電影播放器—MPMoviePlayerController

來源:互聯網
上載者:User

http://blog.csdn.net/iukey/article/details/7311126

PMoviePlayerController 與AVAudioPlayer有點類似,前者播放視頻,後者播放音頻,不過也有很大不同,MPMoviePlayerController 可以直接通過遠程URL初始化,而AVAudioPlayer則不可以。不過大體上用起來感覺差不多。廢話少說進入體驗。
格式支援:MOV、MP4、M4V、與3GP等格式,還支援多種音頻格式。
首先你得引入 MediaPlayer.framework.然後在使用到MPMoviePlayerController 的檔案中匯入相應的標頭檔。
一、建立
MPMoviePlayerController 類通過一個NSURL來初始化,這個URL可以使本地的,也可以是遠端。初始化需要通過 initWithContentURL 方法來實現:

[html]
view plaincopyprint?
  1. MPMoviePlayerController *moviePlayer = [ [ MPMoviePlayerController alloc]initWithContentURL:[NSURL urlWithString:@"http://"] ];//遠程  

或者[html]
view plaincopyprint?

  1. NSString* path =[ NSString stringWithFormat:@"%@/Documents/video.3gp",NSHomeDirectory()];//本地路徑  
  2. MPMoviePlayerController *moviePlayer = [ [ MPMoviePlayerController alloc]initWithContentURL:[NSURL fileURLWithPath:path]];//本地的  

二、屬性設定
1.控制器樣式[html]
view plaincopyprint?

  1. moviePlayer.moviewControlMode = MPMovieControlModeDefault;  

可以使用下列樣式:
MPMovieControlModeDefault            顯示播放/暫停、音量和時間控制
MPMovieControlModeVolumeOnly         只顯示音量控制
MPMovieControlModeHidden             沒有控制器
2.螢幕寬高比例[html]
view plaincopyprint?

  1. moviePlayer.scallingMode = MPMovieScallingModeAspectFit;  

你可以使用下列寬高比值:
MPMovieScallingModeNone            不做任何縮放
MPMovieScallingModeAspectFit       適應螢幕大小,保持寬高比
MPMovieScallingModeAspectFill      適應螢幕大小,保持寬高比,可裁剪
MPMovieScallingModeFill            充滿螢幕,不保持寬高比
3.背景色
背景色會在電影播放器轉入轉出時使用,當電影不能充滿整個螢幕時,也會用來填充空白地區。預設的背景色是黑色,不過你可以使用 UIColor 對象設定backgroundColor屬性,來改變背景色:[html]
view plaincopyprint?

  1. moviePlayer.backgroundColor = [UIColor redColor];  

三、播放和停止電影
要播放電影請調用play 方法,電影播放控制器會自動將視圖切換到電影播放器並開始播放:[html]
view plaincopyprint?

  1. [ moviePlayer play ];  

當使用者點擊Done按鈕,或者 stop 方法被調用都會停止[html]
view plaincopyprint?

  1. [ moviePlayer stop ];  

當電影停止播放後會自動切回播放前應用程式所在的視圖。
四、通知
你的程式可以配置電影播放器在何時候發送通知,包括結束載入內容、技術播放、改變寬高比等。電影播放器會將事件發送到 Cocoa 的通知中樞,你可以對其進行配置,指定將這些事件轉寄到你的應用程式的一個對象。要接收這些通知,需要使用 NSNotificationCenter 類,為電影播放器添加一個觀察者(observer):[html]
view plaincopyprint?

  1. NSNotificationCenter* notificationCenter = [NSNotificationCenter defaultCenter];  
  2. [ notificationCenter addObserver:self selector:@selector(moviePlayerPreloadFinish:) name:MPMoviePlayerContentPreloadDidFinishNotification object:moviePlayer ];  

通知會發到你指定的委託類和目標方法。通知參數讓你可以知道是哪個事件觸發了委託方法:[html]
view plaincopyprint?

  1. -(void)moviePlayerPreloadDidFinish:(NSNotification*)notification{  
  2.     //添加你的處理代碼  
  3. }   

你會觀察到以下通知:
MPMoviePlayerContentPreloadDidFinishNotification 
當電影播放器結束對內容的預先載入後發出。因為內容可以在僅載入了一部分的情況下播放,所以這個通知可能在已經播放後才發出。
MPMoviePlayerScallingModeDidChangedNotification 
當使用者改變了電影的縮放模式後發出。使用者可以點觸縮放表徵圖,在全屏播放和視窗播放之間切換。
MPMoviePlayerPlaybackDidFinishNotification 
當電影播放完畢或者使用者按下了Done按鈕後發出。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.