iOS音乐和音效的播放

一.播放音效

用到的框架:

1.AVFoundation.framework

2.AudioToolbox.framework

步骤:

0.创建URL

1.创建音效ID

 SystemSoundID soundID;//只能创建一次,所以创建一个懒加载

 需要把URL桥接成CFURL

2.播放本地音效

具体代码如下:

1.获得音效文件的路径

NSURL*url= [[NSBundlemainBundle]URLForResource:@"m_03.wav"withExtension:nil];2.加载音效文件,得到对应的音效ID

SystemSoundIDsoundID=0;

AudioServicesCreateSystemSoundID((__bridgeCFURLRef)(url), &soundID);

 3.播放音效

AudioServicesPlaySystemSound(soundID);

音效文件只需要加载1次

音效播放常见函数总结

加载音效文件

AudioServicesCreateSystemSoundID(CFURLRefinFileURL,SystemSoundID*outSystemSoundID)

释放音效资源

AudioServicesDisposeSystemSoundID(SystemSoundIDinSystemSoundID)

播放音效

AudioServicesPlaySystemSound(SystemSoundIDinSystemSoundID)

播放音效带点震动

AudioServicesPlayAlertSound(SystemSoundIDinSystemSoundID)

二.播放音乐

音乐播放用到一个叫做AVAudioPlayer的类

AVAudioPlayer常用方法

加载音乐文件

- (id)initWithContentsOfURL:(NSURL*)urlerror:(NSError**)outError;

- (id)initWithData:(NSData*)data error:(NSError**)outError;

准备播放(缓冲,提高播放的流畅性)

- (BOOL)prepareToPlay;

播放(异步播放)

- (BOOL)play;

暂停

- (void)pause;

停止

- (void)stop;

是否正在播放

@property(readonly,getter=isPlaying)BOOLplaying;

时长

@property(readonly)NSTimeIntervalduration;

当前的播放位置

@propertyNSTimeIntervalcurrentTime;

播放次数(-1代表无限循环播放,其他代表播放numberOfLoops+1次)

@propertyNSIntegernumberOfLoops;

音量

@propertyfloatvolume;

是否允许更改速率

@propertyBOOLenableRate;

播放速率(1是正常速率,0.5是一般速率,2是双倍速率)

@propertyfloatrate;

有多少个声道

@property(readonly)NSUIntegernumberOfChannels;

声道(-1是左声道,1是右声道,0是中间)

@propertyfloatpan;

是否允许测量音量

@property(getter=isMeteringEnabled)BOOLmeteringEnabled;

更新测量值

- (void)updateMeters;

获得当前的平均音量

- (float)averagePowerForChannel:(NSUInteger)channelNumber;

你可能感兴趣的:(iOS音乐和音效的播放)