3

所以,我有一个正在开发的录音 iOS 应用程序。在我的应用程序中,我需要在用户选择的文件(在文档目录中)的任何位置写入音频,这将覆盖那里的任何音频。

示例:我录制了 3 分钟的音频,滚动到第二分钟,再次开始录制 10 秒。现在,2:00 - 2:10 包含新音频,而旧音频已消失(在此示例中音频文件不会变长)。

我正在使用 EZAudio,我可以录制和暂停任意多次,并且它会一直附加到末尾。我本来打算ExtAudioFileSeek在文件中向后搜索并从那里记录,但你只能在文件以只读方式打开时使用它。

我不想要的:我不想记录到不同的文件,并使用此方法将两个文件附加在一起:https ://stackoverflow.com/a/10562809/1391672 与此相关的加载时间很长. iOS 应用程序 Voice Memos 会立即将文件附加在一起。

可以ExtAudioFileWriteAsync用来在开头附加音频吗?还是在指定的样品位置?我应该看看另一种方法吗?

4

1 回答 1

1

我认为 ExtAudioFileSeek 在录制时未定义。我使用基于 ExtAudioFile 构建的 AudioFile API。唯一需要注意的是,您必须进行自己的格式转换(如有必要,我使用 AudioConverterRef)。但是一旦你把所有这些都解决了,你就可以调用 AudioFileWritePackets ,它接受一个 inStartingPacket 参数,这样你就可以在文件的任何地方写入。您还可以将 AudioFileRef 包装在 ExtAudioFileRef 中,以便在文件仍处于打开状态以使用 ExtAudioFileWrapAudioFileID 进行录制时进行播放。标头位于 AudioFile.h 和 AudioConverter.h 中。

于 2015-05-12T16:34:04.477 回答