1.IOS系统中的音频播放方式
AVAudioPlayer、AVPlayer、系统声音、音频队列
AVAudioPlayer:使用简单方便,但只能播放本地音频,不支持流媒体播放。
AVPlayer:IOS4.0以后,可以使用AVPlayer播放本地音频和支持流媒体播放,但提供接口较少,处理音频不够灵活。
音频队列主要处理流媒体播放,提供了强大且灵活的API接口(C函数的接口),但处理起来也较为复杂。
首先来说下AVAudioPlayer的使用
使用AVAudioPlayer或AVPlayer需要引用AVFoundation类库
处理音频示例:
/*************AVAudioPlayer******************/
//
NSBundle *bundle=[NSBundle mainBundle];
//音频文件路径
NSString *musicurl=[bundle pathForResource:@"第一夫人" ofType:@"mp3"];
//初始化本地的URl
NSURL *url=[[NSURL alloc] initFileURLWithPath:musicurl];
//声明一个全局的 AVAudioPlayer *player;
player=[[AVAudioPlayer alloc] initWithContentsOfURL:url error:NULL];
//准备播放
[player prepareToPlay];
/************URL地址播放*******/
/**************AVPlayer**************/
// NSString *musicurl=@"http://zhangmenshiting.baidu.com/data2/music/33934538/339262571358352061320.mp3?xcode=ec59d57fb2fe65b2ac5cb01b8744315c";
//
// NSURL *url=[NSURL URLWithString:musicurl];
//
// AVPlayer *aplayer=[[AVPlayer alloc] initWithURL:url];
//
// [aplayer play];
常用属性:
1.音量
player.volume=0.8; //0.0-1.0之间
2.循环次数
player.numberOfLoops=3;//默认只播放一次
player.duration; //总时长
3.播放位置
palyer.currentTime=15.0 ;
4.声道数
NSUInterger channels=player.numberOfChannels;// 只读属性
//常用方法
[player play]; //播放
[player pause];//暂停
[player stop] //停止
代理方法
AVAudioPlayerDelegate
系统声明的格式caf/wav/aiff格式,且时长小于30s需要导入AudioToolBox类库
/***********播放系统声音(30s)*************************/
// NSString *filePath = [[NSBundle mainBundle] pathForResource:@"44th Street Medium" ofType:@"caf"];
//
// NSURL *url=[NSURL fileURLWithPath:filePath];
// // SystemSoundID soundId;
// // unsigned long soundId;
//
// //为url地址注册系统声音
// AudioServicesCreateSystemSoundID((CFURLRef)url, &soundId);
//
// NSLog(@"soundId : %lu", soundId);
//
// //播放系统声音
// AudioServicesPlaySystemSound(soundId);
//
// //播放震动
// AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
贴上效果图(Xlib)