iOS開發 – 音頻相關 – iPhone手機開發 iPhone軟體開發教學課程

一、簡介

簡單來說,音頻可以分為 2 種
1.音效

又稱『短音頻』,通常在程序中的播放時長為 1 ~ 2 s 在應用程序中起到點綴效果,提升整體用戶體驗

2.音樂

比如遊戲中的『背景音樂』,一般播放時間較長

播放音頻可以使用框架:AVFoundation.framework

二、音效的播放

//1.獲得音效文件的路徑
NSURL *url = [[NSBundle mainBundle] URLForResource:@"aaa.wav" withExtension:nil];
//2.加載音效文件,得到對應的音效 ID
SystemSoundID soundID = 0;
AudioServicesCreatessSystemSoundID((__brage CFURLRef)(url)&soundID);
//3.播放音效
AudioServicesPlaySystemSound(soundID);

註意:音效文件隻需要加載一次即可,所以可以使用懶加載的方式。

音效播放常見函數總結

1.加載音效文件

AudioServicesCreateSystemSoundID((CFURLRef inFileURL, SystemSoundID *outSystemSoundID)

2.釋放音效資源

AudioServicesDisposeSystemSoundID(SystemSoundID inSystemSoundID)

3.播放音效

AudioServicesPlaySystemSoundID(SystemSoundID inSystemSoundID)

4.播放音效帶點震動

AudioServicesPlayAlertSound(SystemSoundID inSystemSoundID)

三、音效的格式

音效格式vcqhtee1xMS/tcShozwvcD4NCjwvYmxvY2txdW90ZT4NCjxoMyBpZD0=”四音頻轉換工具”>四、音頻轉換工具

轉換為 aiff 格式

afconvert -f AIFF -d I8 filename

轉換為 caf 格式

afconvert -f caff -d aac -b 32000 filename

批量處理

find .-name '*.mp3' -exec afconvert -f caff -d aac -b 32000 {} \\;

五、音樂的播放

音樂的播放用到一個叫做 AVAudioPlayer 的類

AVAudioPlayer 常用方法如下:

//加載音樂文件
-(id)initWithContentsOfURL:(NSURL *)url error:(NSError **)outError;
-(id)initWithData:(NSData *)data error:(NSError **)outError;
//準備播放
-(BOOL)prepareToPlay;
//播放(異步播放)
-(BOOL)play;
//暫停
-(void)pause;
//停止
-(void)stop;
//更新測量值
-(void)updateMeters;
//獲得當前的平均音量
-(float)averagePowerForChannel:(NSUInteger)channelNumber;

相關屬性如下:

//是否正在播放
@property(readonly, getter = isPlaying) BOOL playing;
//時長
@property(readonly) NSTimeInterval duration;
//當前的播放位置
@property NSTimeInterval currentTime;
//播放次數
@property NSInter numberOfLoops;
//音量
@property float volume;
//是否允許更改速率
@property BOOL enableRate;
//播放速率(1 是正常速率,0.5 是一般速率,2 是雙倍速率)
@property float rate;
//有多少個聲道
@property(readonly) NSUInteger numberOfChannels
//聲道
@property float pan;
//是否允許測量音量
@property(getter = isMeteringEnabled) BOOL meteringEnabled;

發佈留言