AVFoundation之录音及播放
来源:互联网 发布:淘宝防排查秒上架 编辑:程序博客网 时间:2024/04/27 23:35
录音
在开始录音前,要把会话方式设置成AVAudioSessionCategoryPlayAndRecord
//设置为播放和录音状态,以便可以在录制完之后播放录音 AVAudioSession *session = [AVAudioSession sharedInstance]; NSError *setCategoryError = nil; [session setCategory:AVAudioSessionCategoryPlayAndRecord error:&setCategoryError]; NSError *activationError = nil; [session setActive:YES error:&activationError];
创建AVAudioRecorder
给出录音存放的地址,录音的设置等
//录音存放位置-(NSURL *) getRecordAudioPath{ NSString *urlStr=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; //#define kRecordAudioFile @"myRecord.caf" urlStr=[urlStr stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.caf",[[NSUUID UUID]UUIDString]]]; NSLog(@"save file path at:%@",urlStr); NSURL *url=[NSURL fileURLWithPath:urlStr]; return url;}
- (void) startRecord{ if (recorder.isRecording) { return; } recorderUrl = [self getRecordAudioPath]; NSError *err =nil; NSMutableDictionary *dicM=[NSMutableDictionary dictionary]; // [dicM setValue :[NSNumber numberWithInt:kAudioFormatAppleIMA4] forKey:AVFormatIDKey]; //设置录音格式 [dicM setObject:@(kAudioFormatLinearPCM) forKey:AVFormatIDKey]; //设置录音采样率,8000是电话采样率,对于一般录音已经够了 [dicM setObject:@(8000) forKey:AVSampleRateKey]; //设置通道,这里采用单声道 [dicM setObject:@(1) forKey:AVNumberOfChannelsKey]; //每个采样点位数,分为8、16、24、32 [dicM setObject:@(8) forKey:AVLinearPCMBitDepthKey]; //是否使用浮点数采样 [dicM setObject:@(YES) forKey:AVLinearPCMIsFloatKey]; recorder = [[AVAudioRecorder alloc]initWithURL:recorderUrl settings:dicM error:&err]; recorder.delegate = self; ////如果要监控声波则必须设置为YES recorder.meteringEnabled = YES; [recorder updateMeters]; if (err) { NSLog(@"创建录音机对象时发生错误,错误信息:%@",err.localizedDescription); recorder = nil; return ; } [recorder prepareToRecord]; [recorder record];}
录制暂停
//暂停录音,且可以继续录音 [recorder pause]; //[recorder record];
录制结束
//录制结束,录音文件关闭,会执行代理方法audioRecorderDidFinishRecording/* stops recording. closes the file. */ [recorder stop];
代理方法
pragma mark — AVAudioRecorderDelegate
-(void)audioRecorderDidFinishRecording:(AVAudioRecorder *)recorder successfully:(BOOL)flag
{
NSLog(@”录音完成!”);
}
-(void)audioRecorderEncodeErrorDidOccur:(AVAudioRecorder )recorder error:(NSError )error
{
NSLog(@”录音出错!”);
}
播放录音
创建AVAudioPlayer,AVAudioPlayer播放本地音频。
NSError *err =nil; player = [[AVAudioPlayer alloc]initWithContentsOfURL:recorderUrl error:&err]; player.delegate = self; //设置音乐播放次数 -1为一直循环 player.numberOfLoops = 0; //开启仪表计数功能 player.meteringEnabled = YES; [player updateMeters]; // player.enableRate = YES; //设置左右声道 left:-1,center:0.0,right =1; player.pan = 0.0; //设置音量,其值0.0~1.0 player.volume = 0.6; [player prepareToPlay]; [player play];
播放代理AVAudioPlayerDelegate
#pragma mark- AVAudioPlayerDelegate-(void)audioPlayerDecodeErrorDidOccur:(AVAudioPlayer *)player error:(NSError *)error{ NSLog(@"player 播放失败%@",error);}-(void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag{ NSLog(@"player:%@ 播放完成%d",player,flag); // //根据实际情况播放完成可以将会话关闭,其他音频应用继续播放 // [[AVAudioSession sharedInstance]setActive:NO error:nil]; AudioServicesPlayAlertSound(kSystemSoundID_Vibrate); playBtn.selected = NO;}
1 0
- AVFoundation之录音及播放
- IOS AVFoundation的录音与播放
- 利用AVFoundation实现录音和播放
- 使用AVFoundation来录音并播放
- iOS录音播放简例-AVFoundation
- AVFoundation框架实现录音和播放(AVAudioRecorder、AVAudioPlayer)
- 利用AVFoundation框架实现录音和播放(AVAudioSession、AVAudioRecorder、AVAudioPlayer)
- ios之录音+播放
- iOS AVFoundation(二)之视频播放
- 调用麦克风录音及播放
- IOS利用AVFoundation框架实现录音和播放(AVAudioSession、AVAudioRecorder、AVAudioPlayer)
- IOS利用AVFoundation框架实现录音和播放(AVAudioSession、AVAudioRecorder、AVAudioPlayer)
- IOS利用AVFoundation框架实现录音和播放(AVAudioSession、AVAudioRecorder、AVAudioPlayer)
- Android录音及播放功能实现
- AudioRecorder 录音及播放,音量的获取。
- Android使用MediaRecorder实现录音及播放
- 录音及播放时常见bug
- iOS 录音及播放 音波图波形
- VISUAL SVN安装 及客户端使用
- hdu 1978 How many ways
- javascript常用方法函数收集
- extmail安装配置
- Windows/MFC_中__declspec 的用法
- AVFoundation之录音及播放
- Android 面试常见问题
- iOS9 3DTouch、ShortcutItem、Peek And Pop技术一览
- 【Android】java 获取文件MD5值
- Hello World
- 当年第一次学习java多线程写的例子,从此多线程不再陌生
- [Android]自定义控件入门示例
- [Android UI开发] Android常用工具类
- 一个简化NSCoding的方案