AVAudioPlayer
是一个音频播放器类,能够播放本地或是内存(NSData)中的音频文件,不但如此你还能使用多个AVAudioPlayer
同时播放音频文件实现混音功能,甚至能做到动态调节音量,速率,3D立体声环绕等。
一、AVAudioPlayer的使用方法
1.创建一个内存或本地音频的Data/URL。
2.创建 AVAudioPlayer
类的对象
3.调用 prepareToPlay:
加载缓存资源
4.调用 play
开始播放
二、代码实现
/** 创建音频URL */
NSURL *url = [[NSBundle mainBundle] URLForResource:@"万神纪.mp3" withExtension:nil];
/** 创建音频播放器类 */
self.audioPlayer = [[AVAudioPlayer alloc]initWithContentsOfURL:url error:nil];
if (self.audioPlayer) {
/** 异步预加载缓存资源 */
[self.audioPlayer prepareToPlay];
/** 开始播放 */
[self.audioPlayer play];
}
三、能够进行的操作
- 设置音频重复次数
-1
代表无限循环:
self.audioPlayer.numberOfLoops = -1;
- 能否调整速度
self.audioPlayer.enableRate = YES;
- 调整立体声
-1.0
左声道,0.0
正中心,1.0
右声道
self.audioPlayer.pan = 1.0;
- 调整音量
0.0
到1.0
之间
self.audioPlayer.volume = 1.0;
- 调整速率
1.0
默认值,0.5
老污龟,2.0
鬼畜
self.audioPlayer.rate = 1.0;
- 暂停
[self.audioPlayer pause];
- 停止
[self.audioPlayer stop];
四、实现混音
- 用一个存放
AVAudioPlayer
对象的数组存放多个音频文件。 - 校准音频文件的播放时间。
- 开始播放。
/** 获取第一个播放器的时间为基准微调同步播放 */
NSTimeInterval delayTime = [self.players[0] deviceCurrentTime] + 0.1f;
for (AVAudioPlayer *player in self.players) {
/** 在一个时间后播放 */
[player playAtTime:delayTime];
}