01 (AVAudioRecorder*)audioRecorder {
02
03 if (!audioRecorder) {
04
05 NSString *path = [NSHomeDirectory() stringByAppendingString:@“/tmp”];
06
07 NSTimeInterval timeInterval = [[NSDate date] timeIntervalSince1970];
08
09 NSString *fullName = [path stringByAppendingFormat:@“/%.0f.aif”, timeInterval];
10
11 NSMutableDictionary *settings = [NSMutableDictionary dictionary];
12
13 //[settings setValue:[NSNumber numberWithInt: kAudioFormatMPEGLayer3] forKey:AVFormatIDKey];
14
15 [settings setValue:[NSNumber numberWithInt: kAudioFormatLinearPCM] forKey:AVFormatIDKey];
16
17 [settings setValue: [NSNumber numberWithFloat:8000] forKey:AVSampleRateKey];
18
19 [settings setValue: [NSNumber numberWithInt: 1] forKey:AVNumberOfChannelsKey]; // mono
20
21 //Linear PCM Format Settings
22
23 [settings setValue:[NSNumber numberWithInt: 8] forKey:AVLinearPCMBitDepthKey];
24
25 [settings setValue:[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsBigEndianKey];
26
27 [settings setValue:[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsFloatKey];
28
29 //Encoder Settings
30
31 [settings setValue:[NSNumber numberWithInt:AVAudioQualityMax] forKey:AVEncoderAudioQualityKey]; //AVAudioQualityMin
32
33 [settings setValue:[NSNumber numberWithInt:96] forKey:AVEncoderBitRateKey];
34
35 [settings setValue:[NSNumber numberWithInt:8] forKey:AVEncoderBitDepthHintKey];
36
37 NSError *error = [NSError new];
38
39 @try {
40
41 audioRecorder = [[AVAudioRecorder alloc] initWithURL:[NSURL fileURLWithPath:fullName] settings:settings error:&error];
42
43 }
44
45 @catch (NSException *exception) {
46
47 [[[[UIAlertView alloc] initWithTitle:[NSString stringWithFormat:@“错误:%@”, error.description] message:nil delegate:nil cancelButtonTitle:nil otherButtonTitles:@“OK”, nil] autorelease] show];
48
49 }
50
51 @finally {
52
53 [error release];
54
55 }
56
57 audioRecorder.delegate = self;
58
59 }
60
61 return audioRecorder;
62
63 }
以上方法在真机上,可能会出现调用:
1 [self.audioRecorder record];
时,延迟几秒。加入:
1 [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error: nil];
即可。

3159

被折叠的 条评论
为什么被折叠?



