使用 AVAudioRecorder 看似随机的文件损坏(有时文件无法播放) - iOS

2024-04-04

在我目前正在开发的应用程序中,我或多或少遇到了障碍。在应用程序中,您可以进入一个视图,该视图在标准表格视图中列出所有本地保存的音频文件。从这里,您可以单击它们来播放它们,或者点击下面的录制按钮来制作新的录音,该录音随后会自动保存到应用程序沙箱中。

现在,大多数情况下,所有这些实际上都运行得很好。我可以坐下来录音并回放。我可以连续测试大约 45 次,没有任何问题。然后突然随机地我会遇到一个非常奇怪的问题。问题是,录音机突然开始只保存损坏的文件,这些文件无法播放,并且大小恰好为 4096 字节,无论您录音多长时间。

我以完全标准的方式使用 AVAudioRecorder,设置如下:

// Specific settings for the audio recording
NSDictionary *recordSettings = [NSDictionary dictionaryWithObjectsAndKeys:
    [NSNumber numberWithInt:AVAudioQualityMin],
    AVEncoderAudioQualityKey,
    [NSNumber numberWithInt:8], 
    AVEncoderBitRateKey,
    [NSNumber numberWithInt: 2], 
    AVNumberOfChannelsKey,
    [NSNumber numberWithFloat:22000.0], 
    AVSampleRateKey,
    nil];

NSError *error = nil;
audioRecorder = [[AVAudioRecorder alloc]
    initWithURL:contentURL
    settings:recordSettings
    error:&error];
audioRecorder.delegate = self;

我这样开始录音:

if (!isRecording) {
    isRecording = YES;
    [audioRecorder record];

    // Start the timer
    recordTiming = [NSDate date];

    timeCheck = [NSTimer
        scheduledTimerWithTimeInterval:1.0f
        target:self
        selector:@selector(timeCheck)
        userInfo:nil
        repeats:YES];
}

然后用这个来停止它:

if (isRecording) {
    [audioRecorder stop];

    // Stop the timer
    [timeCheck invalidate];
}

我不知道什么会导致这个问题发生。到目前为止我几乎已经尝试了所有方法。我已经检查以确保记录器对象被正确回收(因此现在每个记录都有一个新实例),并且旧引用被释放等等,以确保它与干扰对象无关,但没有什么能解决这个问题。

有人知道什么可能会导致损坏的文件出现问题吗?


注意:由于OP已经闲置了几天,我想这个问题应该得到回答以供公众将来参考,因此我发布了这个答案。

The AVAudioSession必须在开始录制之前获取。

AVAudioSession *audioSession = [AVAudioSession sharedInstance];
NSError *err = nil;
[audioSession setCategory :AVAudioSessionCategoryPlayAndRecord error:&err];
if(err){
   NSLog(@"audioSession: %@ %d %@", [err domain], [err code], [[err userInfo] description]);
   return;
}
err = nil;
[audioSession setActive:YES error:&err];
if(err){
   NSLog(@"audioSession: %@ %d %@", [err domain], [err code], [[err userInfo] description]);
   return;
}

参考:https://stackoverflow.com/a/9706731/188331 https://stackoverflow.com/a/9706731/188331

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 AVAudioRecorder 看似随机的文件损坏(有时文件无法播放) - iOS 的相关文章

随机推荐