一: 关于音频 -- IOS中有三种播放音频的方式:AVAudioPlayer、音频服务、音频队列
1> 简单介绍: 播放网络音频的时候, 我们使用音频队列; 播放本地音乐, 一般使用AVAudioPlayer
二: AVAudioPlayer -- 播放本地音频
1> 简答的介绍:
如果要使用AVAudioPlayer, 首先导入头文件 :#import <AVFoundation/AVFoundation.h> AVAudioPlayer类封装了播放单个声音的能力。播放器可以用NSURL或者NSData来初始化,要注意的是NSURL并不可以是网络url而必须是本地文件URL,因为AVAudioPlayer不具备播放网络音频的能力。一个AVAudioPlayer只能播放一个音频,如果你想混音你可以创建多个AVAudioPlayer实例,每个相当于混音板上的一个轨道。
2> 如何使用AVAudioPlayer:(使用本地URL创建)
0) 创建 :AVAudioPlayer
AVAudioPlayer
1) 设置音量
player.volume=0.8;//0.0~1.0之间
2) 循环次数
player.numberOfLoops = 3;//默认只播放一次
3) 播放位置
player.currentTime = 15.0;//可以指定从任意位置开始播放
4) 声道数
NSUInter channels = player.numberOfChannels; // 只读属性
5) 持续时间
NSTimeInterval duration = player.dueration;//获取采样的持续时间
6) 仪表计数
player.meteringEnables = YES; // 开启仪表计数功能
[player updateMeters]; // 更新仪表读数
// 读取每个声音的平均电平和峰值电平, 代表每个声道的分贝数, 范围在-100~0之间
//读取每个声道的平均电平和峰值电平,代表每个声道的分贝数,范围在-100~0之间。
for(int i = 0; i<player.numberOfChannels;i++){
float power = [player averagePowerForChannel:i];
float peak = [player peakPowerForChannel:i];
7) 播放声音
[ player prepareToPlay];//分配播放所需的资源,并将其加入内部播放队列
[player play];//播放
[player stop];//停止
3> 代理方法:
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer*)player successfully:(BOOL)flag{
//播放结束时执行的动作
}
- (void)audioPlayerDecodeErrorDidOccur:(AVAudioPlayer*)player error:(NSError *)error{
//解码错误执行的动作
}
- (void)audioPlayerBeginInteruption:(AVAudioPlayer*)player{
//处理中断的代码
}
- (void)audioPlayerEndInteruption:(AVAudioPlayer*)player{
//处理中断结束的代码
}
4> audioPlayerEndInterrupti
// 当程序被应用外部打断之后,重新回到应用程序的时候触发。在这里当回到此应用程序的时候,继续播放音乐。
- (void)audioPlayerEndInterrupti
{
}
三: 音频队列
1>
2>
3>
4>
5>