AVAudioRecorder 在 prepareToRecord 上抛出异常

Posted

技术标签:

【中文标题】AVAudioRecorder 在 prepareToRecord 上抛出异常【英文标题】:AVAudioRecorder throwing exception on prepareToRecord 【发布时间】:2013-11-21 08:07:52 【问题描述】:

我正在运行sample code 进行录音(源代码可在文末下载)。代码是这样的

NSArray *pathComponents = [NSArray arrayWithObjects:
                           [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject],
                           @"MyAudioMemo.m4a",
                           nil];
NSURL *outputFileURL = [NSURL fileURLWithPathComponents:pathComponents];

// Setup audio session
AVAudiosession *session = [AVAudioSession sharedInstance];
[session setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];

// Define the recorder setting
NSMutableDictionary *recordSetting = [[NSMutableDictionary alloc] init];

[recordSetting setValue:[NSNumber numberWithInt:kAudioFormatMPEG4AAC] forKey:AVFormatIDKey];
[recordSetting setValue:[NSNumber numberWithFloat:44100.0] forKey:AVSampleRateKey];
[recordSetting setValue:[NSNumber numberWithInt: 2] forKey:AVNumberOfChannelsKey];

// Initiate and prepare the recorder
recorder = [[AVAudioRecorder alloc] initWithURL:outputFileURL settings:recordSetting error:nil];
recorder.delegate = self;
recorder.meteringEnabled = YES;
[recorder prepareToRecord];

但是在模拟器上运行时它会在 prepareToRecord 处引发异常:

它确实会记录,如果我只是在异常处关闭断点,它会运行良好。但这很烦人。怎么了?

【问题讨论】:

音频演示应用程序完美运行。我不明白为什么它会为你崩溃。 这很奇怪。我重新下载只是为了确保我没有干预任何事情。我想那只是我的系统。 @Bhumeshwerkatre BTW,您是否为所有异常添加断点? 我没有遇到任何异常。它只是录制音频,我也可以播放录制的音频文件。 【参考方案1】:

我也遇到了这个异常。寻找解决方案。需要注意的是,只有启用异常断点才能看到这些异常。该应用程序正常运行,但这令人担忧。我会继续调查的。

编辑: 好吧,答案就在这里:AVAudioPlayer throws breakpoint in debug mode 我自己想了这么多,但仍然对有这些例外感到不舒服。在录制时使用不同的音频格式会使异常消失。但是,我想使用无损格式,这确实会导致这些异常。希望这会有所帮助。

【讨论】:

以上是关于AVAudioRecorder 在 prepareToRecord 上抛出异常的主要内容,如果未能解决你的问题,请参考以下文章

AVAudioRecorder 不保存文件

如何检测 AVAudioRecorder 中的静音?

iOS:AVAudioRecorder.prepareToRecord() 失败且没有错误

使用AVAudioRecorder录制音频

AVAudioRecorder 和 AVAudioPlayer

Mac-AVAudioRecorder 选择麦克风