我目前正在 iPhone 上使用音频队列来录制和播放音频。
我想做的是录制一些音频,允许用户暂停录制队列,并在音频中来回搜索以选择他们可以再次开始录制的位置。
我通过将播放 AudioQueueBuffer 大小设置得足够小来解决搜索问题,以便播放音频队列回调发生的速率允许用户使用 slider 控件来回调整 slider 时收听音频.
我认为我可以通过设置从音频录制队列回调调用的 AudioFileWritePackets 函数的 inStartingPacket 参数来实现在新位置的录制。
问题是这只会在之前录制的音频上插入音频。文件长度显然不会改变,因此如果用户向后退并录制比以前更少的音频,则在新录制的音频结束后旧音频仍然存在。
有没有办法让 AudioFile 在用户开始插入新音频时截断,有没有其他方法可以删除从插入位置开始的旧音频,或者有更好的方法关于这个任务?
谢谢
最佳答案
我也有同样的疑问。我目前的方法是将新音频记录到一个单独的文件中,然后在完成后将第一个文件的第一部分与第二个文件连接起来,将结果写入第三个文件,然后将第三个文件重命名为第一个文件并删除第二个文件。连接操作需要使用 AudioFile API 编写自定义但相当简单的函数。
我也很想听到任何更开明的想法,或者看到一个 AudioFileTruncate()
函数。
关于iphone - 在 iPhone 上使用 AudioQueue 录制/播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2650990/