音频播放:
1.音效播放
2.音乐播放
(1)音频播放 :
《1》系统声音 短小的声音 使用的框架 AudioToolBox
《2》1、AudioServicesPlaySystemSound 播放系统声音
2、AudioServicesPlayAlertSound播放系统声音有震动
《3》使用:
1.声明声音的ID 通过声音的id来区分是哪一个音效 无符号整形
2.创建声音的服务 (告诉系统有一个可以使用的soundID) 需要声音文件路径和声音的ID
3.播放声音 声音ID
代码如下:
-(void)playSound{
// 根据这个数字来区分是哪一个系统声音的
SystemSoundID soundID = 1;
// 创建一个系统声音的服务
AudioServicesCreateSystemSoundID((__bridge CFURLRef _Nonnull)([[NSBundle mainBundle]URLForResource:@"胜利.aiff" withExtension:nil]), &soundID);
// 播放系统声音
AudioServicesPlaySystemSound(soundID);
AudioServicesPlayAlertSound(soundID);
}
注意:这里只是播放短的音效,比如提示音,较长的音乐不能播放,使用的是纯C语言写的,
(2)音频播放 :音乐 音频 指的是那些音乐类似的长文件
《1》介绍
1. 使用框架 AVFoundation框架 AVaudioplayer
2.注意:
(1)必须声明属性、全局变量的音乐对象才可以播放
(2)在退出播放页面的时候 一定要把播放对象制空 同时把delegate制空
3.属性
《2》使用
1.资源文件路径
2.初始化播放器
3.设置播放器
4.预播放
5.播放
-(void)playMusicWithName:(NSString *)name{
NSError *error;
// 创建一个音乐播放对象
avplayer = [[AVAudioPlayer alloc]initWithContentsOfURL:[[NSBundle mainBundle]URLForResource:name withExtension:nil] error:&error];
// 如果有错误 打印出来
if (error) {
NSLog(@"%@",error);
}
// 预播放
[avplayer prepareToPlay];
NSLog(@"%lu",(unsigned long)avplayer.numberOfChannels);
// 如果想设置播放速率 必须得先开启允许设置
avplayer.enableRate = YES;
// 速率rate
// player.rate = 10;
// 峰值 获得峰值 必须设置enableMeters=YES;
// 更新峰值
// [avplayer updateMeters];
NSLog(@"%f",[avplayer peakPowerForChannel:2]);//当前峰值
NSLog(@"%f",[avplayer averagePowerForChannel:2]);//获得平均峰值
// 声道 (-1.0 左声道 0.0中间 1.0右声道)
// player.pan = -1.0;
// 循环次数 0播放一次 负数循环播放 正数设置数字+1
avplayer.numberOfLoops = 0;
//avplayer.delegate = self;
// 设置音乐播放器 当前播放的时间
// player.currentTime = 50;
// duration 总时长 只读
NSLog(@"乐音的总时长%f",avplayer.duration);
NSLog(@"通道的数量%ld",avplayer.numberOfChannels);
NSLog(@"设备当前时间%f",avplayer.deviceCurrentTime);
// 设置播放次数
avplayer.numberOfLoops = -1;
// 播放
// [avplayer play];
}
这里也需要提示一下几个代理方法在音乐播放的时候可以调用:
//播放完成的时候调用
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag{}
//解码错误的时候调用
- (void)audioPlayerDecodeErrorDidOccur:(AVAudioPlayer *)player error:(NSError * __nullable)error{}
//被打扰开始中断的时候调用
- (void)audioPlayerBeginInterruption:(AVAudioPlayer *)player{}
//中断结束的时候调用
- (void)audioPlayerEndInterruption:(AVAudioPlayer *)player withOptions:(NSUInteger)flags{}
好了,感觉自己理解的可以试着去做一个音乐播放器了 ,尝试一下