gpt4 book ai didi

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

转载 作者:技术小花猫 更新时间:2023-10-29 10:17:33 30 4
gpt4 key购买 nike

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

现在,大多数情况下,所有这些实际上都运行得非常好。我可以坐下来录音并回放。我可以坐下来测试它大约 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 有几天不活动了,我想这个问题应该得到回答以供公众将来引用,因此我发布了这个答案。

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

关于ios - 使用 AVAudioRecorder 看似随机的文件损坏(有时无法播放文件)- iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9704827/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com