標籤: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
- #import <MediaPlayer/MediaPlayer.h>
-
- @interface MoviePlayerViewController : UIViewController {
-
- MPMoviePlayerViewController * moviePlayerView;
- }
-
- @property (nonatomic, retain) MPMoviePlayerViewController * moviePlayerView;
-
-
- -(IBAction) playMovie: (id) sender;
- - (void) playingDone;
-
- @end
m檔案的載入和卸載方法
- - (void) viewDidLoad {
- [[NSNotificationCenter defaultCenter] addObserver:self selector: @selector(playingDone) name:MPMoviePlayerPlaybackDidFinishNotification object:nil];
- }
- - (void)dealloc {
- [[NSNotificationCenter defaultCenter] removeObserver:self];
- [moviePlayerView release];
- [super dealloc];
- }
MPMoviePlayerViewController提供了在播放過程中的狀態改變和其它事件的通知。在viewDidLoad註冊了一個播放完成的通知,常用的通知有:
MPMoviePlayerPlaybackDidFinishNotification通知接收者播放結束。
MPMoviePlayerScalingModeDidChangeNotification改變影片的尺寸。
MPMoviePlayerContentPreloadDidFinishNotification表示預先處理以及完成,準備開始播放影片。
dealloc方法中的[[NSNotificationCenter defaultCenter]
removeObserver:self];影片播放完成要登出通知。
播放事件
- - (IBAction) playMovie: (id) sender {
-
- moviePlayerView = [[MPMoviePlayerViewController alloc]
- initWithContentURL:[NSURL fileURLWithPath:[[NSBundle mainBundle]
- pathForResource:@"short" ofType:@"3gp"]]];
-
- moviePlayerView.moviePlayer.controlStyle = MPMovieControlStyleFullscreen;
- moviePlayerView.moviePlayer.scalingMode = MPMovieScalingModeAspectFit;
- // MPMovieControlStyleNone
- //MPMovieControlStyleEmbedded
- //MPMovieControlStyleDefault
-
- //[movieplayer play];
- //在當前view上添加視頻的視圖
- [[[UIApplication sharedApplication] keyWindow] addSubview:moviePlayerView.view];
-
- }
視頻檔案可以播放資來源目錄、沙箱目錄和網路播放。本例中我們採用資來源目錄。
moviePlayerView.moviePlayer屬性是MPMoviePlayerController類型,它有的controlStyle屬性
可以控制播允許存取為,它的取值有:
MPMovieControlStyleFullscreen
MPMovieControlStyleNone沒有播放控制項
MPMovieControlStyleEmbedded
MPMovieControlStyleDefault
MPMoviePlayerController類還有scalingMode屬性用於控制影片的尺寸,它的取值有:
MPMovieScalingModeNone原始大小
MPMovieScalingModeAspectFit縮放到一個填充方向
MPMovieScalingModeAspectFill填充兩邊可能會切除一部分
MPMovieScalingModeFill填充兩邊可能會改變比例
播放完成
- - (void) playingDone {
- NSLog(@"播放完成");
- [moviePlayerView.view removeFromSuperview];
- [moviePlayerView release];
- 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
播放“短聲音”
播放“短聲音”主要就是兩個步驟:
註冊聲音
- AudioServicesCreateSystemSoundID ((CFURLRef)fileURL, &myID);
播放聲音
- AudioServicesPlaySystemSound (myID);
監聽完成事件方法
- AudioServicesAddSystemSoundCompletion
清除播放sound ID
- SystemSoundID myID;
-
- AudioServicesDisposeSystemSoundID (myID);
震動
也可以通過System Sound API讓iPhone震動,但是iPod touch不能震動。
震動可以通過指定一個特殊的system sound ID—— kSystemSoundID_Vibrate實現。
AudioServicesPlaySystemSound (kSystemSoundID_Vibrate);
iOS開發之多媒體API(1)