AVAudioRecorder记录方法在设备中失败但在模拟器中工作

时间:2011-01-27 19:45:16

标签: objective-c

我有一个init:

    bool b;
 NSLog(@"url");
 NSURL *url = [NSURL fileURLWithPath:@"/dev/null"];
NSLog(@"dizionario");
NSDictionary *audioSettings = [NSDictionary dictionaryWithObjectsAndKeys:
     [NSNumber numberWithFloat: 44100.0],                 AVSampleRateKey,
     [NSNumber numberWithInt: kAudioFormatAppleLossless], AVFormatIDKey,
     [NSNumber numberWithInt: 1],                         AVNumberOfChannelsKey,
     [NSNumber numberWithInt: AVAudioQualityMax],         AVEncoderAudioQualityKey,
     nil];

NSError *error; 

recorder = [[AVAudioRecorder alloc] initWithURL:url settings:audioSettings error:&error];
NSLog(@"audio");
if (recorder) {
//NSLog(@"prepara");
[recorder prepareToRecord];
//NSLog(@"meter");
recorder.meteringEnabled = YES;
//NSLog(@"recorder");
b=[recorder record];
                    NSLog(@"%@",(b ? @"OK" : @"here it FAILS"));

} else {
NSLog(@"ERRORE:");
NSLog([error description]); 
}  
//NSLog(@"fine init");  

因为我使用[记录器记录]失败。 我怎么知道为什么这个方法失败了? 我该如何处理这个问题? 感谢

3 个答案:

答案 0 :(得分:2)

我也遇到了可以在模拟器中录制而不是设备的问题。更改为使用NSTemporaryDirectory()为我工作。

recordPath = [NSTemporaryDirectory() stringByAppendingPathComponent:@"Sound.m4a"];
NSURL *url = [NSURL fileURLWithPath:recordPath];

答案 1 :(得分:1)

您必须设置AVAudioSession。 看看这个link我认为它可以帮到你。

如果您在同一个应用程序中使用记录和播放,请不要忘记在代码中激活AVAudioSession。

答案 2 :(得分:0)

我写了一个类似的问题,但在发布之前找到了我的答案here。你能在设备上写“/ dev / null”吗?那是一个目录吗?在发布问题之前一定要搜索答案: - (。