iOS - 录制时在AudioToolbox中崩溃

时间:2014-07-03 15:29:18

标签: ios iphone objective-c avaudiorecorder audiotoolbox

我们在基于iOS7的iPhone应用程序中发生了崩溃,但似乎很难再现。我们的一些客户正在体验它,我们正在从Crashlytics获取尽可能多的信息。我在这里附上了堆栈跟踪的截图,遗憾的是(看似)不是很有用,因为它完全局限于AudioToolbox AV类:

stacktrace screenshot

我们也有面包屑,这表明它肯定发生在用户点击我们的应用程序中的“记录”按钮后(虽然我不确定崩溃是立即发生还是在记录持续时间之后)。

关于“录制”代码,应用程序实际上没有做任何特殊或自定义/唯一的操作。以下是我们的记录器和设置的属性访问器的设置(如果需要知道,采样率为8000.0,通道数为1):

- (AVAudioRecorder *)recorder {
    if (!_recorder) {
        NSError *error = nil;
        _recorder = [[AVAudioRecorder alloc] initWithURL:_tmpRecordingUrl settings:self.audioSettings error:&error];
        _recorder.meteringEnabled = YES;
        _recorder.delegate = self;
        [_recorder prepareToRecord];

        if (error) {
            DLog(@"Could not create audio recorder: %@", error);
            return nil;
        }
    }

    return _recorder;
}

- (NSDictionary *)audioSettings {
    if (!_audioSettings) {
        _audioSettings = @{
                           AVFormatIDKey:               @(kAudioFormatLinearPCM),
                           AVSampleRateKey:             @(kSampleRate),
                           AVNumberOfChannelsKey:       @kNumberOfChannels,
                           AVLinearPCMBitDepthKey:      @16,
                           AVLinearPCMIsBigEndianKey:   @NO,
                           AVLinearPCMIsFloatKey:       @NO,
                           AVEncoderAudioQualityKey:    @(AVAudioQualityMedium)
                          };
    }

    return _audioSettings;
}

然后要记录,我们只需调用[self.recorder record]方法,当它完成时,它需要tmpRecodingUrl并将其移动到永久位置(尽管在这种情况下它永远不会达到这一点)。启动录制时会发生一些其他事情,例如一些UI叠加层和类级布尔设置/跟踪计时器,但它们都在AudioToolbox之外,所以我不相信任何导致问题的原因。

我知道这不是太多了,但有没有人经历过这种类似的崩溃?任何方向都会非常有帮助,谢谢!

0 个答案:

没有答案