//音频播放
/*英译:record:录音 */ 1 导入头文件#import<AVFoundation/AVFoundation.h>//AVAudioSession是一个单例模式。在IOS7以前可以不用设置,在IOS7上不设置AVAudioSession则不可以录音。
//处理录音或播放结束后,要关闭音频会话,来延续后台音乐的播放
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory:AVAudioSessionCategoryPlayback error:nil];[audioSession setActive:NO error:nil]; //处理要想启用其他程序的后台音乐播放,则要用如下设置AVAudioSession *audioSession = [AVAudioSession sharedInstance];[audioSession setCategory:AVAudioSessionCategoryPlayback error:nil];[audioSession setActive:NO withFlags:AVAudioSessionSetActiveFlags_NotifyOthersOnDeactivatio //处理录音保存路径 1 CFUUID每次都会产生一个唯一号CFUUIDRef cfuuid = CFUUIDCreate(kCFAllocatorDefault); NSString *cfuuidString = (NSString*)CFBridgingRelease(CFUUIDCreateString(kCFAllocatorDefault2 创建沙盒
NSString *catchPath=[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)lastObject]; 3 创建沙盒文件夹(唯一的) NSString *audioRecordFilePath=[catchPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.AAC", cfuuidString]];4 将本地NSString转化为NSURL(fileURLWithPath)
NSURL *url=[NSURL fileURLWithPath:audioRecordFilePath];
//音频录制(标准过程5,9更新)
准备:导入AVFoundation框架及头文件
1 设置会话类型,指定类型为播放及录音AVAudioSession *audioSession = [AVAudioSession sharedInstance];[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
2 激活会话类别
[audioSession setActive:YES error:nil];3 封装字典参数,有音频格式int,采样率float,通道数int,深度int
是通过KVC来设置的(setValue forKey)NSDictionary *setting=[NSDictionary dictionary];[setting setValue:[NSNumber numberWithInt:kAudioFormatAppleIMA4] forKey:AVFormatIDKey];
4 封装保存音频的沙盒路径
5 实例化录音对象,参数:保存URL,参数字典,错误,
注意模拟器调试,只能保存到沙盒中,AVAudioRecorder *recorder = [[AVAudioRecorder alloc]initWithURL:(NSURL *) settings:(NSDictionary *) error:&error];6 预加载准备录音
[recorder prepareRecorder];7 处理按钮点击监听录音
监听按钮touchDown:录音开启 [recorder recorder];监听按钮touchUpInset:手指在点击按钮后抬起及touchUpOutset:手指在点击按钮后在其他地方抬起停止录音 [recorder stop]; 录音的实现总结:1 实例化单例会话对象,设置会话类别为录音及播放模式,开启会话2 实例化录音对象,参数有存储沙盒路径,音频字典参数(音频格式,采样率,深度等)3 封装沙盒路径4 实例化录音对象 路径 字典参数 错误5 预加载开启6 监听按钮的点击状态,按下录音,抬起停止7 监听点击 实例化音频播放对象,填入URL,播放开启
//音频播放(限本地播放)
苹果推荐的音频类型:AAC,IMA4,CAF(CoreAudioFormat) 1 AVFoundation (只能播放本地音频,非网络音频) _player=[AVAudioPlayer alloc]initWithContentsOfURL:url error:nil];[_player play];
总结:播放本地音频三步《1》封装音频URL路径《2》类方法 初始化音频对象,参数URL 错误处理《3》对象开启对象中有许多属性 设置循环次数,播放控制(play/stop)及预加载方法prepareToPlay//视频音频播放(支持网络)
2 MediaPlayer 1、首先导入media.play.framework 框架2、包含头文件<MediaPlayer/MediaPlay.h>
具体实现步骤
1 封装URL路径
2 实例化MPMoviePlayerController对象
alloc initWithURL 添加URL3 将音频控制器View添加到self.view (add)(由于建立控制器,给视频播放对象非配内存空间,播放结束要去释放他,电影播放结束是会注册一个叫MPMoviePlaybackDidFinishNotification的通知通知到到通知中心,所以做音频播放对象释放,给self添加监听者来释放)
4 [NSNotificationCenter defaultCenter] addObsever:self selector:@selector(MovePlayBackComplete:)Object:4 音频对象开启 play (一般建一个按钮,监听方法里面写这些东西)