gpt4 book ai didi

iphone - AVAudioRecorder Record 方法随机返回 NO

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

我目前正在开发一款支持应用内录音的应用。用户可以获得他/她已经通过应用程序录制的本地保存的音频文件的标准表格 View ,或者按下按钮转到新的录制 View ,从那里可以录制新的 Audio Session ,它将自动获取保存到应用程序沙箱。现在这个功能在大多数时候都运行良好。我可以录制新文件并从应用程序播放它们,但有时录音机无法通过这种方法开始录音:

-(void) startRecording
{
if (!isRecording)
{
isRecording = YES;

BOOL recordingSucess = [audioRecorder record];

if (recordingSucess)
NSLog(@"WE STARTED THE RECORDING!");
else
NSLog(@"WE DID NOT START THE RECORDING!");

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

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

即NSLog会打印出“We did not start the recording”,表示启动记录失败。这会导致一个空的音频文件仍以恰好 4096 字节的恒定文件大小保存到应用程序中。这是录音机对象的初始化方式:

-(id) initWithContentURL:(NSURL *)contentURL
{
self = [super init];

if (self)
{
NSLog(@"Initializing audio recorder!");

// 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;
}

还有 NSLog checks 会检查 error 是否为 nil,所以此时我确定初始化似乎没有失败。究竟是什么导致记录方法在看似随机的时间失败,而它在大多数其他时间都运行良好?

最佳答案

在开始录制之前,应初始化 Audio Session :

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;
}

查看已接受的 answer供引用。

关于iphone - AVAudioRecorder Record 方法随机返回 NO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9706020/

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