iOS关于音频的一些事情

一: 关于音频 -- 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 *player =[[AVAudioPlayeralloc] initWithContentsOfURL:[NSURLfileURLWithPath:[[NSBundle mainBundle] pathForResource:@"AndersonofType:@"wav"] ] error:nil];

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> audioPlayerEndInterruption:

// 当程序被应用外部打断之后,重新回到应用程序的时候触发。在这里当回到此应用程序的时候,继续播放音乐。

- (void)audioPlayerEndInterruption:(AVAudioPlayer *)player

{

   [audioPlayer play];

}


三: 音频队列

1>

2>

3>

4>

5>

四:关于后台模式播放的实现

五:锁屏界面的歌词显示

六:音频在不同状态下的播放, 以及如何设置

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值