保存录制的 AVAudioRecorder 声音文件:现在怎么办? (iOS,Xcode 4)

Posted

技术标签:

【中文标题】保存录制的 AVAudioRecorder 声音文件:现在怎么办? (iOS,Xcode 4)【英文标题】:Saving a recorded AVAudioRecorder sound file: Now what? ( iOS, Xcode 4 ) 【发布时间】:2012-02-20 08:51:21 【问题描述】:

在我的应用程序中,我希望用户能够录制一个声音文件并播放它,然后保存声音文件以备后用。我使用this tutorial设置播放和录音界面,但是本教程遗漏了一个关键部分:如何将声音永久保存到磁盘?

另外,当您在这里时,如何设置声音文件录制的最长时间?我不想要长度超过 30 秒的声音文件。

谢谢,希望我能解决这一切。

【问题讨论】:

-1'ed for "Crappy tutorial link" - 它缺少你想要的东西这一事实并没有让它变得糟糕,特别是因为它已经做了多少工作是显而易见的。 (我与该教程无关)。 【参考方案1】:

Voice Record Demo 是一个很好的例子。它使用 Cocos2D 作为 UI,但如果您只看一下 HelloWorldScene.m 类,它包含您需要的所有代码:

    创建一个新的音频会话 检查麦克风是否已连接 开始录制 停止录制 保存录制的音频文件 播放保存的语音文件

启动音频会话后,您可以使用如下方法将录音保存到给定文件名:

-(void) saveAudioFileNamed:(NSString *)filename 

destinationString = [[self documentsPath] stringByAppendingPathComponent:filename];
NSLog(@"%@", destinationString);
NSURL *destinationURL = [NSURL fileURLWithPath: destinationString];

NSDictionary *settings = [NSDictionary dictionaryWithObjectsAndKeys:
                          [NSNumber numberWithFloat: 44100.0],                 AVSampleRateKey,
                          [NSNumber numberWithInt: kAudioFormatAppleLossless], AVFormatIDKey,
                          [NSNumber numberWithInt: 1],                         AVNumberOfChannelsKey,
                          [NSNumber numberWithInt: AVAudioQualityMax],         AVEncoderAudioQualityKey,
                          nil];

NSError *error;

recorder = [[AVAudioRecorder alloc] initWithURL:destinationURL settings:settings error:&error];
recorder.delegate = self;

【讨论】:

以上是关于保存录制的 AVAudioRecorder 声音文件:现在怎么办? (iOS,Xcode 4)的主要内容,如果未能解决你的问题,请参考以下文章

AVAudioRecorder 不保存文件

为啥我无法播放 AVAudioRecorder 录制的声音文件?

AVAudioRecorder 支持哪些格式来录制声音?

AVAudiorecorder 和 AVAudioPlayer 并不总是播放声音

iPhone AVAudioRecorder,AudioQueueServices,检测到声音时如何自动录制音频

播放暂停的 AVAudioRecorder 文件