iOS開發之多媒體API(1)

來源:互聯網
上載者:User

標籤:style   blog   http   io   ar   os   使用   sp   for   

本文轉載至 http://mobile.51cto.com/iphone-423224.htm

視頻格式可以分為適合本地播放的本地影像視頻和適合在網路中播放的網路流媒體影像視頻兩大類。儘管後者在播放的穩定性和播放畫面品質上可能沒有前者 優秀,但網路流媒體影像視頻的廣泛傳播性使之正被廣泛應用於ApsaraVideo for VOD、網路示範、遠程教育、網路視頻廣告等等互連網資訊服務領域。

AD:2014WOT全球軟體技術峰會北京站 課程視頻發布

播放視頻

視頻檔案介紹

視頻格式可以分為適合本地播放的本地影像視頻和適合在網路中播放的網路流媒體影像視頻兩大類。儘管後者在播放的穩定性和播放畫面品質上可能沒有前者 優秀,但網路流媒體影像視頻的廣泛傳播性使之正被廣泛應用於ApsaraVideo for VOD、網路示範、遠程教育、網路視頻廣告等等互連網資訊服務領域。

適合行動裝置的視頻檔案 

3GP,3GP是一種3G流媒體的視頻編碼格式,主要是為了配合3G網路的高傳輸速度而開發的,也是目前手機中最為常見的一種視頻格式。 視頻MP4格式,除了支援MP3所具有的音樂播放功能外,還具備強大的MPEG-4視頻播放能力。

iPhone中還支援mov格式檔案。

iOS播放視頻  

iOS sdk為播放視頻提供了非常簡便方法,提供的MPMoviePlayerViewController類作為開發使用,在iOS4以前的版本是MPMoviePlayerController。

在iPhone開發規範中禁止使用私人API播放視頻,因此播放畫面的控制的控制項都是有iPhone提供好的,我們沒有別的選擇。我們能做的:

載入URL中視頻

播放、暫停視頻

使用者控制行為和縮放模式

產生通知

視頻播放案例

添加 MediaPlayer.framework 

MoviePlayerViewController.h

  1. #import <MediaPlayer/MediaPlayer.h> 
  2.  
  3. @interface MoviePlayerViewController : UIViewController { 
  4.  
  5.     MPMoviePlayerViewController * moviePlayerView; 
  6.  
  7. @property (nonatomic, retain) MPMoviePlayerViewController * moviePlayerView; 
  8.  
  9.  
  10. -(IBAction) playMovie: (id) sender; 
  11. - (void) playingDone; 
  12.  
  13. @end 

m檔案的載入和卸載方法

  1. - (void) viewDidLoad {  
  2.     [[NSNotificationCenter defaultCenter] addObserver:self selector: @selector(playingDone) name:MPMoviePlayerPlaybackDidFinishNotification object:nil];  
  3. }  
  4. - (void)dealloc {  
  5.     [[NSNotificationCenter defaultCenter] removeObserver:self];  
  6.     [moviePlayerView release];  
  7.     [super dealloc];  
  8. }  

MPMoviePlayerViewController提供了在播放過程中的狀態改變和其它事件的通知。在viewDidLoad註冊了一個播放完成的通知,常用的通知有:

MPMoviePlayerPlaybackDidFinishNotification通知接收者播放結束。

MPMoviePlayerScalingModeDidChangeNotification改變影片的尺寸。

MPMoviePlayerContentPreloadDidFinishNotification表示預先處理以及完成,準備開始播放影片。

dealloc方法中的[[NSNotificationCenter defaultCenter]

removeObserver:self];影片播放完成要登出通知。

播放事件 

  1. - (IBAction) playMovie: (id) sender { 
  2.      
  3.     moviePlayerView = [[MPMoviePlayerViewController alloc]  
  4.                    initWithContentURL:[NSURL fileURLWithPath:[[NSBundle mainBundle]  
  5.                                 pathForResource:@"short" ofType:@"3gp"]]]; 
  6.      
  7.     moviePlayerView.moviePlayer.controlStyle = MPMovieControlStyleFullscreen; 
  8.     moviePlayerView.moviePlayer.scalingMode = MPMovieScalingModeAspectFit; 
  9.     // MPMovieControlStyleNone 
  10.     //MPMovieControlStyleEmbedded  
  11.     //MPMovieControlStyleDefault 
  12.      
  13.     //[movieplayer play]; 
  14.     //在當前view上添加視頻的視圖 
  15.     [[[UIApplication sharedApplication] keyWindow] addSubview:moviePlayerView.view];     
  16.  

視頻檔案可以播放資來源目錄、沙箱目錄和網路播放。本例中我們採用資來源目錄。

moviePlayerView.moviePlayer屬性是MPMoviePlayerController類型,它有的controlStyle屬性

可以控制播允許存取為,它的取值有:

MPMovieControlStyleFullscreen

MPMovieControlStyleNone沒有播放控制項

MPMovieControlStyleEmbedded 

MPMovieControlStyleDefault

MPMoviePlayerController類還有scalingMode屬性用於控制影片的尺寸,它的取值有:

MPMovieScalingModeNone原始大小

MPMovieScalingModeAspectFit縮放到一個填充方向

MPMovieScalingModeAspectFill填充兩邊可能會切除一部分

MPMovieScalingModeFill填充兩邊可能會改變比例

播放完成

  1. - (void) playingDone { 
  2.     NSLog(@"播放完成"); 
  3.     [moviePlayerView.view removeFromSuperview]; 
  4.     [moviePlayerView release]; 
  5.     moviePlayerView = nil;     

playingDone 方法是在影片播放完成時候調用,這是因為我們在通知中樞註冊的方法。

播放完成需要把播放視圖remove這樣才可以獲得上一個螢幕。

12.2 播放音頻

12.2.1 音頻檔案介紹

有兩類主要的音頻檔案格式: 

無損格式,例如WAV,PCM,TTA,FLAC,AU,APE,TAK,WavPack(WV) ,CAF

有損格式,例如MP3,Windows Media Audio(WMA),Ogg Vorbis(OGG),AAC 

移動音頻檔案

作為行動裝置音頻檔案應該原則上比較小,一般的格式:

WAV、由於無損壓縮效果最好。

MP3、有損壓縮,檔案比較小,由於去除的是人類無法感應到的聲音,效果也很好。這是目前常用格式。

AAC、壓縮比例更大,比MP3檔案還要小。

CAF(Core Audio Format)是Apple專用的無損壓縮格式。

12.2.2 Core Audio

進階API,易用 

System Sound API –播放短聲音、警告音等。

AVFoundation 可以播放長時間聲音,簡單易用。

低級API,能夠對音頻有更多的控制

Audio Toolbox – 錄製、播放、音頻流有全面的控制。

OpenAL – 播放立體聲,常用於遊戲。

12.2.3 System Sound API 

System Sound 可以播放“短的”聲音,所謂短聲音就是5秒以內。 不迴圈、沒有聲音控制、立即播放。

播放格式限制:

線性PCM 和 IMA4

.caf .aif 或 .wav

播放“短聲音” 

播放“短聲音”主要就是兩個步驟:

註冊聲音

  1. AudioServicesCreateSystemSoundID ((CFURLRef)fileURL, &myID); 

播放聲音

  1. AudioServicesPlaySystemSound (myID); 

監聽完成事件方法

  1. AudioServicesAddSystemSoundCompletion 

清除播放sound ID

  1. SystemSoundID myID;  
  2.  
  3.    AudioServicesDisposeSystemSoundID (myID);   

震動

也可以通過System Sound API讓iPhone震動,但是iPod touch不能震動。

震動可以通過指定一個特殊的system sound ID—— kSystemSoundID_Vibrate實現。

AudioServicesPlaySystemSound (kSystemSoundID_Vibrate);

iOS開發之多媒體API(1)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.