IOS音频和视频
使用AVAudioPlayer类播放音频
掌握后台播放音乐
自定义后台任务
使用MPMoviePlayer播放视频
IOS音频播放系统概述
IOS系统中得音频播放方式;
AVAudioPlayer,AVPlayer,系统声音,音频队列
AVAudioPlayer
使用简单方便,但 只能播放本地音频,不支持流媒体播放
AVPlayer
IOS4.0以后,可以使用AVPlayer播放本地音频和支持流媒体播放,但提供接口较少,处理音频不够灵活
音频队列
音频队列主要处理媒体播放,提供了强大且灵活的API接口(C函数的接口),但处理起来也较为复杂
引用框架AVAudioPlayer或者AVPlayer需要引用AVFoundation类库
处理音频示例
NSBundle *bundle=[NSBundle mainBundle];
//音频文件路径
NSString *urlString=[bundle pathForResource:@"第一夫人" ofType:@“mp3”];
//初始化本地url
NSURL *url=[[NSURL alloc]initFileURLWithPath:urlString];
//初始化音频对象
AVAudioPlayer *player=[AVAUdioPlayer alloc]initWithContentsOfURL:url error:nil];
//分配播放所需的资源,并将其加入内部播放队列
[player prepareToPlay];
if([player play]){
NSLog(@"正在播放");
}
AVAudioPlayer常用属性
1音量
player.volume=0.8;//0.0-1.0之间
2.循环的次数
player.numberOfLoops=3;//默认只播放一次
player.duration//总时长
3播放位置
player.currentTime=15.0;//以指定从任意位置开始播放
4.声道数
NSUInteger channels=player.numberOfChannels;//只读属性
5常用方法
[player play];
[player stop];
[player pause];
代理方法
AVAudioPlayer代理方法
-(void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL) flag{
//播放结束时执行的动作
}
-(void)audioPlayerDecodeErrorDidOccur:(AVAudioPlayer *)player error:(NSError *)error{
//解码错误执行的动作
}
-(void)audioPlayerBeginInterruption:(AVAudioPlayer *)player{
//处理中断的代码
}
-(void)audioPlayerEndInterruption:(AVAudioPlayer *)player{
//处理中断结束的代码
}
播放系统声音
注册系统播放声音示例
NSBundle *bundle=[NSBundle mainBundle];
NSString *path=[bundle pathForResource:@"44th Street Medium" ofType:@"caf"];
//初始化本地文件url
NSUrl *url=[NSURL fileURLWithPath:path];
UInt32 soundID;
//将URL所在的音频文件注册为系统声音,soundID音频ID标示该音频
AUdioServicesCreateSystemSoundID((CFURLRef)url,&soundID);
//播放音频
AudioServicesPlaySystemSound(soundID);
系统震动
//播放系统震动
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
需要引入AudioToolbox.framework库
播放系统声音
音频数据文件可分为压缩和非压缩的存储类型。亚瑟的音频文件虽然体积较小(相对于非压缩的),但需要耗费处理器的性能进行解压和解码。
如果音频文件体积较小,压缩后的音频文件,也不会节省较大的磁盘空间。像这一类小型非压缩的文件可以注册成为系统声音
格式为:caf/wav/aiff格式,且时长小于30s