gpt4 book ai didi

ios - AVAudioRecorder 不保存文件

转载 作者:行者123 更新时间:2023-11-28 20:11:27 25 4
gpt4 key购买 nike

我现在正在为 AVAudioRecorder(和 Player)苦苦挣扎。我有一个应用程序,其中有三个简单的按钮可以录制/播放/停止通话,我正在使用 AVAudioRecorder 和 AVAudioPlayer 来录制和播放声音。现在,当我测试应用程序时(在 iPhone 和模拟器中),我在尝试播放刚刚录制的内容时收到 Cocoa 260 - 文件未找到异常。打印 AVAudioRecorder 文件 URL 的路径时,我得到一个文件夹内文件的 URL,该文件夹在我的计算机上不存在(在模拟器上运行。我的代码如下所示:

- (void)viewDidLoad
{
[super viewDidLoad];

_plyBtn.enabled = NO;
_stopBtn.enabled = NO;

NSArray *dirPaths;
NSString *docsDir;

dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES);
docsDir = dirPaths[0];

NSString *soundFilePath = [docsDir stringByAppendingPathComponent:@"test.caf"];

NSURL *soundFileURL = [NSURL fileURLWithPath:soundFilePath];

NSDictionary *recordSettings = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithInt:AVAudioQualityMin],
AVEncoderAudioQualityKey,
[NSNumber numberWithInt:16],
AVEncoderBitRateKey,
[NSNumber numberWithInt:2],
AVNumberOfChannelsKey,
[NSNumber numberWithFloat:44100.0],
AVSampleRateKey,
nil];

NSError *error = nil;
_rec = [[AVAudioRecorder alloc] initWithURL:soundFileURL settings:recordSettings error:&error];

if(error){
NSLog(@"error: %@", [error localizedDescription]);
} else {
[_rec prepareToRecord];
}

NSLog(@"path: %@", soundFileURL);
}

我不知道为什么底部的 NSLog 会打印出无效的文件路径...就像我说的,我在录制时没有收到错误消息,但在尝试播放之后录制的音频时却收到了错误消息。这是我的播放功能:

- (IBAction)playAudio:(id)sender {
if(!_rec.recording){
_recBtn.enabled = NO;
_stopBtn.enabled = YES;

NSError *error1;
NSError *error2;

NSData *soundFile = [[NSData alloc] initWithContentsOfURL:_rec.url options:NSDataReadingMappedIfSafe error:&error1];
_ply = [[AVAudioPlayer alloc] initWithData:soundFile error:&error2];

//_ply = [[AVAudioPlayer alloc] initWithContentsOfURL:_rec.url error:&error];

_ply.delegate = self;

if(error1){
NSLog(@"error: %@", [error1 localizedDescription]);
} else if (error2) {
NSLog(@"error: %@", [error2 localizedDescription]);
} else {
[_ply play];
}
}
}

这似乎不起作用:

- (IBAction)recordAudio:(id)sender {
NSLog(@"recordAudio called");
_plyBtn.enabled = NO;
_stopBtn.enabled = YES;
[_rec record];
}

提前感谢您的帮助:)

最佳答案

可能是录制路径不对。

NSDocumentationDirectory...不应该是 NSDocumentDirectory 吗?

关于ios - AVAudioRecorder 不保存文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20035513/

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