gpt4 book ai didi

avfoundation - AVAudioRecorder 记录空白文件

转载 作者:行者123 更新时间:2023-12-04 18:09:00 27 4
gpt4 key购买 nike

以下是我的录制按钮方法的内容。它创建了所需的文件,但无论我记录多长时间,创建的文件的长度始终为 4kb 和 0 秒,我无法弄清楚为什么它无效。对于averagePowerPerChannel,计量也返回-120,我假设它是因为文件已损坏。

NSDictionary *recordSettings = [NSDictionary
dictionaryWithObjectsAndKeys:
[NSNumber numberWithInt:AVAudioQualityMin],
AVEncoderAudioQualityKey,
[NSNumber numberWithInt:16],
AVEncoderBitRateKey,
[NSNumber numberWithInt: 2],
AVNumberOfChannelsKey,
[NSNumber numberWithFloat:44100.0],
AVSampleRateKey,
nil];
NSError *error;
NSArray *dirPaths;
NSString *docsDir;

dirPaths = NSSearchPathForDirectoriesInDomains(
NSDocumentDirectory, NSUserDomainMask, YES);
docsDir = [dirPaths objectAtIndex:0];
NSString *soundFilePath = [docsDir
stringByAppendingPathComponent:@"sound.caf"];

NSURL *soundFileURL = [NSURL fileURLWithPath:soundFilePath];

self.shotRecorder = [[AVAudioRecorder alloc] initWithURL:soundFileURL settings:recordSettings error:&error];
self.shotRecorder.delegate = self;

if (error)
{
NSLog(@"error: %@", [error localizedDescription]);

} else {
[self.shotRecorder prepareToRecord];
self.shotRecorder.meteringEnabled = YES;
[self.shotRecorder record];
shotTimer = [NSTimer scheduledTimerWithTimeInterval: 0.03 target: self selector: @selector(levelTimerCallback:) userInfo: nil repeats: YES];
}

最佳答案

在开始录制之前,将应用的 AudioSession 设置为支持录制的 session 类型之一。例如,在开始录制之前调用它:

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryRecord error:&error];

如果您尝试在 AudioSession 设置为不支持录音的类型的情况下进行录音,该代码似乎可以正常执行,但会导致您描述的空的 4kb 音频文件。

要稍后播放文件,请务必将类别设置回支持播放的类别,例如 AVAudioSessionCategoryPlayback 或 AVAudioSessionCategoryPlayAndRecord。

关于avfoundation - AVAudioRecorder 记录空白文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19141624/

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