- (void)viewDidLoad { [super viewDidLoad]; NSArray *dirPath=NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES); NSString *docPath=[dirPath objectAtIndex:0]; NSString *filePath=[docPath stringByAppendingPathComponent:@"test1.wav"]; _url=[NSURL URLWithString:filePath]; NSDictionary *recordSettings=[NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithInt:AVAudioQualityMin], AVEncoderAudioQualityKey, [NSNumber numberWithInt:16], AVEncoderBitRateKey, [NSNumber numberWithInt:2], AVNumberOfChannelsKey, [NSNumber numberWithFloat:44100.0], AVSampleRateKey, nil]; NSError *error; //AVAudioRecorder *recorder; //AVAudioPlayer *player; _player=[[AVAudioPlayer alloc] initWithContentsOfURL:_url error:&error]; _recorder=[[AVAudioRecorder alloc] initWithURL:_url settings:recordSettings error:nil]; if (error) { NSLog(@"%@",[error localizedDescription]); }else{ [_recorder prepareToRecord]; } }
调试的时候显示_player的值为nil,还有报错: The operation couldn’t be completed. (OSStatus error 2003334207.)我没在网上找到答案。
楼主,解决了嘛?我也遇到同样问题,估计是转wav格式出错了
_player的值为nil,这个应该是Xcode的BUG导致的,你如果用NSLog输出,_player应该是有值的。
AVAudioRecorder
设置代理objectivec/// 新增API,获取录音权限. 返回值,YES为无拒绝,NO为拒绝录音.
+ (BOOL)canRecord
{
__block BOOL bCanRecord = YES;
if ([[[UIDevice currentDevice]systemVersion]floatValue] >= 7.0) {
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
if ([audioSession respondsToSelector:@selector(requestRecordPermission:)]) {
[audioSession performSelector:@selector(requestRecordPermission:) withObject:^(BOOL granted) {
if (granted) {
bCanRecord = YES;
} else {
bCanRecord = NO;
}
}];
}
}
return bCanRecord;
}
objectivecAVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
[audioSession setActive:YES error:nil];