音頻我們簡易的分為兩種,既音效和音頻。
1.音效:是有聲音制造而成,主要用於加強對於對聲音的處理。在用戶使用app的時候加入音效,無疑是用戶體驗的加分項。
2.音樂:音樂的播放時間一般比較長,比如游戲中無限循環的背景音樂。
我們在使用音頻的時候需要用到兩個框架
1.AVFoundation.framework
2.AudioToolbox.framework
由於AVFoundation比較強大這裡就先介紹一下AudioToolbox框架
音效播放常見函數總結 //加載音效文件 AudioServicesCreateSystemSoundID(CFURLRef inFileURL, SystemSoundID *outSystemSoundID) //釋放音效資源 AudioServicesDisposeSystemSoundID(SystemSoundID inSystemSoundID) //播放音效 AudioServicesPlaySystemSound(SystemSoundID inSystemSoundID)//播放音效帶點震動
AudioServicesPlayAlertSound(SystemSoundID inSystemSoundID)
使用時需要注意,為了到達省電的目的,硬件的解碼只能對一個音頻文件進行解碼。
下面來介紹一下AVFoundation框架
音樂播放用到一個叫做AVAudioPlayer的類 AVAudioPlayer常用方法 //加載音樂文件 - (id)initWithContentsOfURL:(NSURL *)url error:(NSError **)outError; - (id)initWithData:(NSData *)data error:(NSError **)outError; //准備播放(緩沖,提高播放的流暢性) - (BOOL)prepareToPlay;//播放(異步播放)
- (BOOL)play;
//暫停 - (void)pause; //停止 - (void)stop; //是否正在播放 @property(readonly, getter=isPlaying) BOOL playing; //時長 @property(readonly) NSTimeInterval duration; //當前的播放位置 @property NSTimeInterval currentTime; //播放次數(-1代表無限循環播放,其他代表播放numberOfLoops+1次) @property NSInteger numberOfLoops; //音量 @property float volume;//是否允許更改速率
@property BOOL enableRate;
//播放速率(1是正常速率,0.5是一般速率,2是雙倍速率) @property float rate;//有多少個聲道
@property(readonly) NSUInteger numberOfChannels;
//聲道(-1是左聲道,1是右聲道,0是中間) @property float pan; //是否允許測量音量 @property(getter=isMeteringEnabled) BOOL meteringEnabled; //更新測量值 - (void)updateMeters;//獲得當前的平均音量
- (float)averagePowerForChannel:(NSUInteger)channelNumber;
AVFoundation.framework和AudioToolbox.framework的常用方法就是這些了
開發中具體怎樣使用這兩個框架比較好,就仁者見仁,智者見智了。
隨著時代的前進,OC成為歷史只是時間問題了。面對swift的強勢來襲,起初國內的大牛們只是持觀望狀態,
但是隨著swift2.0的到來,這種趨勢已經勢不可擋了。最為一名優秀的開發者,同時掌握多個開發語言是剛需。
最為一名優秀的iOS開發者,同時掌握OC和swift也是剛需。