你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> 詳解iOS應用中播放本地視頻以及選取本地音頻的組件用法

詳解iOS應用中播放本地視頻以及選取本地音頻的組件用法

編輯:IOS開發綜合

MPMoviePlayerControlle播放本地視頻

MPMoviePlayerControlle與AVAudioPlayer有點類似,前者播放視頻,後者播放音頻,不過也有很大不同,MPMoviePlayerController 可以直接通過遠程URL初始化,而AVAudioPlayer則不可以。不過大體上用起來感覺差不多。廢話少說進入體驗。
格式支持:MOV、MP4、M4V、與3GP等格式,還支持多種音頻格式。
首先你得引入 MediaPlayer.framework.然後在使用到MPMoviePlayerController 的文件中導入相應的頭文件。

一、創建
MPMoviePlayerController 類通過一個NSURL來初始化,這個URL可以使本地的,也可以是遠程的。初始化需要通過 initWithContentURL 方法來實現:
復制代碼 代碼如下:
MPMoviePlayerController *moviePlayer = [ [ MPMoviePlayerController alloc]initWithContentURL:[NSURL urlWithString:@"http://"] ];//遠程 

或者
復制代碼 代碼如下:
NSString* path =[ NSString stringWithFormat:@"%@/Documents/video.3gp",NSHomeDirectory()];//本地路徑 
MPMoviePlayerController *moviePlayer = [ [ MPMoviePlayerController alloc]initWithContentURL:[NSURL fileURLWithPath:path]];//本地的 

二、屬性設置
1.控制器樣式
復制代碼 代碼如下:
moviePlayer.moviewControlMode = MPMovieControlModeDefault; 

可以使用下列樣式:
MPMovieControlModeDefault            顯示播放/暫停、音量和時間控制
MPMovieControlModeVolumeOnly         只顯示音量控制
MPMovieControlModeHidden             沒有控制器
2.屏幕寬高比例
復制代碼 代碼如下:
moviePlayer.scallingMode = MPMovieScallingModeAspectFit; 

你可以使用下列寬高比值:
MPMovieScallingModeNone            不做任何縮放
MPMovieScallingModeAspectFit       適應屏幕大小,保持寬高比
MPMovieScallingModeAspectFill      適應屏幕大小,保持寬高比,可裁剪
MPMovieScallingModeFill            充滿屏幕,不保持寬高比
3.背景色
背景色會在電影播放器轉入轉出時使用,當電影不能充滿整個屏幕時,也會用來填充空白區域。默認的背景色是黑色,不過你可以使用 UIColor 對象設置backgroundColor屬性,來改變背景色:
復制代碼 代碼如下:
moviePlayer.backgroundColor = [UIColor redColor]; 

三、播放和停止電影
要播放電影請調用play 方法,電影播放控制器會自動將視圖切換到電影播放器並開始播放:
復制代碼 代碼如下:
[ moviePlayer play ];

當用戶點擊Done按鈕,或者 stop 方法被調用都會停止
復制代碼 代碼如下:
[ moviePlayer stop ]; 

當電影停止播放後會自動切回播放前應用程序所在的視圖。

四、通知
你的程序可以配置電影播放器在何時候發送通知,包括結束加載內容、技術播放、改變寬高比等。電影播放器會將事件發送到 Cocoa 的通知中心,你可以對其進行配置,指定將這些事件轉發到你的應用程序的一個對象。要接收這些通知,需要使用 NSNotificationCenter 類,為電影播放器添加一個觀察者(observer):
復制代碼 代碼如下:
NSNotificationCenter* notificationCenter = [NSNotificationCenter defaultCenter]; 
[ notificationCenter addObserver:self selector:@selector(moviePlayerPreloadFinish:) name:MPMoviePlayerContentPreloadDidFinishNotification object:moviePlayer ]; 

通知會發到你指定的委托類和目標方法。通知參數讓你可以知道是哪個事件觸發了委托方法:
復制代碼 代碼如下:
-(void)moviePlayerPreloadDidFinish:(NSNotification*)notification{ 
    //添加你的處理代碼 
}  

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

MPMediaPickerController選取本地音

MPMediaPickerController 與 UIImagePickerController 類似,允許用戶從音樂庫中選取音樂、播客、音頻書。 
1、創建
復制代碼 代碼如下:
MPMediaPickerController *mpc = [[MPMediaPickerControlleralloc]initWithMediaTypes:MPMediaTypeMusic]; 
   mpc.delegate = self;//委托 
   mpc.prompt =@"Please select a music";//提示文字 
   mpc.allowsPickingMultipleItems=NO;//是否允許一次選擇多個
 
上述代碼創建了一個 MPMediaPickerController 並設置了相關屬性。其中初始化的時候有一個參數是媒體類型,媒體類型可以是下面這些值:
復制代碼 代碼如下:
enum { 
    // audio 
    MPMediaTypeMusic        = 1 << 0, 
    MPMediaTypePodcast      = 1 << 1, 
    MPMediaTypeAudioBook    = 1 << 2, 
    MPMediaTypeAudioITunesU = 1 << 3, // available in iOS 5.0 
    MPMediaTypeAnyAudio     = 0x00ff, 
     
    // video (available in iOS 5.0) 
    MPMediaTypeMovie        = 1 << 8, 
    MPMediaTypeTVShow       = 1 << 9, 
    MPMediaTypeVideoPodcast = 1 << 10, 
    MPMediaTypeMusicVideo   = 1 << 11, 
    MPMediaTypeVideoITunesU = 1 << 12, 
    MPMediaTypeAnyVideo     = 0xff00, 
     
    MPMediaTypeAny          = ~0 
}; 
typedef NSInteger MPMediaType; 

2、委托函數
復制代碼 代碼如下:
- (void)mediaPicker:(MPMediaPickerController *)mediaPicker didPickMediaItems:(MPMediaItemCollection *)mediaItemCollection{ 
    /*insert your code*/ 
    for (  MPMediaItem* itemin [mediaItemCollection items]) { 
    } 
    [selfdismissModalViewControllerAnimated:YES]; 
    [mediaPicker release]; 


在上面這個函數裡你可以處理所選取的內容。下面這個函數負責處理選中後取消的動作:
復制代碼 代碼如下:
-(void)mediaPickerDidCancel:(MPMediaPickerController *)mediaPicker{ 
    /*insert your code*/ 
    [selfdismissModalViewControllerAnimated:YES]; 
    [mediaPicker release]; 
}

3、顯示
你可以在任何需要顯示的時候調用下面代碼:
復制代碼 代碼如下:
[selfpresentModalViewController:mpc animated:YES]; 

4、關鍵點
看完上面的代碼你可能明白了,但是又感覺沒明白。為什麼呢?看第一個回調函數就知道了,回調函數傳參好像不認識。 MPMediaItemCollection 的對象的items 就是用戶選擇項的集合。每一項都是MPMediaItem 類的成員,並可以查詢其屬性值。屬性太多,我就不一一列出了,你去看MPMediaItem類的頭文件或者官方文檔就明白了。

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved