iOS中音频播放的一般格式:
ACC ALAC IMA4 MP3 caf linear
音效播放:是播放一些短音频 长做点缀音频使用
AudioToolbox.framework
音乐播放:是播放一些较长的音频,对于这些音频的播放 通常需要进行精确的控制 使用
AVFoundation.framework
音效
AudioToolbox.framework是一套基于C语言的框架 使用它来播放音效其本质是将短音频注册到系统声音服务(System Sound Service)System Sound Service是一种简单的。底层的声音播放服务,但他本身也存在一些限制
音效播放时间不能超过30S
数据必须是PCM或则IMA4格式
音频文件必须打包成.caf .aif .wav中得一种(官方说法。实测中MP3也可以放)
使用System Sound Service播放音效的步骤如下:
1注册ID
调用AUdioService是CreateSystemSoundID( CFURLRefinFileURL)函数获得系统声音
2:播放
播放
// AudioServicesPlaySystemSound(ID);
振动
AudioServicesPlayAlertSound(ID);
音效播放 (系统声音服务) 是不允许咱们取控制音频的
//要想播放音乐、音效,就必须导入系统文件
//音效播放的AudioToolbox
#import <AudioToolbox/AudioToolbox.h>
//音频播放的AVFoundation
#import <AVFoundation/AVFoundation.h>
AudioToolbox 通过系统声音ID 播放音效
步骤:1注册 2播放
//
// NSString *path =[[NSBundle mainBundle]pathForResource:@”背景音乐” ofType:@”caf”];
//
//
// SystemSoundID ID =1;
//
注册系统声音的ID
// AudioServicesCreateSystemSoundID((__bridge CFURLRef)([NSURL fileURLWithPath:path]), &ID);
//
播放
// AudioServicesPlaySystemSound(ID);
振动
AudioServicesPlayAlertSound(ID);
//
//
//
// 播放是声音文件
// 使用AVFoundation(audio video)处理 音频视频的播放
// 1. 音频播放
// 如果想使用 音乐播放功能 就必须导入AVFoundation
// 使用AVAUdioPlayer 播放音频
// 设置音频的音量(volume) 播放速率(rate) 音频播放的位置、得到总时长、监测音频是否播放完毕、音频播放的循环次数……操作
调用方法
[self createPlayerWithAudioName:@""];;
-(void)createPlayerWithAudioName:(NSString *)name
{
NSString *path =[[NSBundle mainBundle]pathForResource:name ofType:nil];
if (player) {
player =nil;
}
NSError *error;
// 初始化音频播放器
player =[[AVAudioPlayer alloc ]initWithContentsOfURL:[NSURL fileURLWithPath:path] error:&error];
// 挂上代理
player.delegate =self;
//速率
// 如果想设置播放速率 必须得先开启允许设置
player.enableRate =YES;
// 播放速率
player.rate =1;
// 声道(-1.0是左声道 0.0是中间 1.0是右声道)
// player.pan =-1.0;
// 循环的次数(0播放一次 负数是循环播放 正数设置次数为 数字+1)
player.numberOfLoops =1;
// 预播放(把音乐文件的数据 加载到内存)
[player prepareToPlay];
// 播放
[player play];
// 设置音乐播放器当前播放的时间(可以用来设置前进到哪播放)
player.currentTime = 100;
//duration 总时长 只读
NSLog(@"音乐的总时长%f",player.duration);
//
NSLog(@"通道的数量%lu",(unsigned long)player.numberOfChannels);
//
// player.isPlaying
// 暂停
[player pause];
// 停止
[player stop];
//
NSLog(@"设备当前的时间%f",player.deviceCurrentTime);
}
#pragma mark------音乐播放的代理AVAudioPlayerDelegate方法
//音乐播放完成的时候调用(可以让他播放完播放下一首)
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
NSLog(@"……");
}