简单音效处理
- 导入"AVFoundation"框架
#import <AVFoundation/AVFoundation.h>
- 创建URL地址
- 系统音效文件 SystemSoundID = UInt32
- 创建音效文件 --> URL写完之后,需要转换成CF框架
- 播放音效文件
- 如果不需要播放了, 需要释放音效所占用的内存
//2. 创建URL地址
NSURL *url = [[NSBundle mainBundle] URLForResource:@"XXX.MP3" withExtension:nil];
//此处导入本地文件,可以从网络获取,但是要在info.plast加入ATS
//3. 系统音效文件 SystemSoundID = UInt32
SystemSoundID soundID;
//4. 创建音效文件 --> URL写完之后,需要转换成CF框架
AudioServicesCreateSystemSoundID((__bridge CFURLRef _Nonnull)(url), &soundID);
//5. 播放音效文件
//5.1不带振动的播放
AudioServicesPlaySystemSound(soundID);
//5.2带振动的播放
AudioServicesPlayAlertSound(soundID);
//6. 如果不需要播放了, 需要释放音效所占用的内存
// AudioServicesDisposeSystemSoundID(soundID);
PS:此处释放存在漏洞,是为封装音效工具做准备
AVAudioPlayer播放音乐
- 需要使用AVFoundatiaon框架
#import <AVFoundation/AVFoundation.h>
- 创建音乐播放器
// 创建音乐播放器
//1. 获取URL路径
NSURL *url = [[NSBundle mainBundle] URLForResource:@"我爱你你却爱着她.mp3" withExtension:nil];
//2. 创建一个error对象
NSError *error;
//3. 创建音乐播放器
self.player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
if (error) {
NSLog(@"有错误产生");
}
- 根据需求, 进行播放/暂停/停止
1. 准备播放 --> 将音频文件加载到内存中 --> 这句话可以不写 --> play会隐式调用prepareToPlay方法. 但是规范来说, 还是会写上
[self.player prepareToPlay];
2.开始播放
[self.player play];
// 暂停播放
// [self.player pause];
// 停止播放
[self.player stop];
// 归零操作 / 时间重置 currentTime--> 秒为单位
self.player.currentTime = 0;