在 iPhone 上使用 AudioQueue 录制/播放
Posted
技术标签:
【中文标题】在 iPhone 上使用 AudioQueue 录制/播放【英文标题】:Record/Playback with AudioQueue on iPhone 【发布时间】:2010-04-16 06:15:33 【问题描述】:我目前在 iPhone 上使用音频队列来录制和播放音频。
我想做的是录制一些音频,允许用户暂停录制队列,并在音频中来回搜索以选择他们可以再次开始录制的位置。
我已经解决了寻找问题,方法是使播放 AudioQueueBuffer 大小足够小,以便播放音频队列回调的发生率允许用户在来回调整滑块时使用滑块控件来收听音频.
我想我可以通过设置我从音频录制队列回调中调用的 AudioFileWritePackets 函数的 inStartingPacket 参数来实现在新位置录制。
问题在于这只会在之前录制的音频上插入音频。文件长度显然不会改变,所以如果用户倒退并录制比以前更少的音频,旧音频仍然会在新录制的音频结束后保留。
有没有一种方法可以让 AudioFile 在用户开始插入新音频时截断,有没有其他方法可以从插入位置开始删除旧音频,或者有更好的方法吗?关于这个任务?
谢谢
【问题讨论】:
【参考方案1】:我也有同样的问题。我目前的方法是将新音频录制到一个单独的文件中,然后将第一个文件的第一部分与第二个文件连接起来,将结果写入第三个文件,然后将第三个文件重命名为第一个文件和删除第二个文件。连接操作需要使用 AudioFile API 编写一个自定义但相当简单的函数。
我也很想听听更多开明的想法,或查看AudioFileTruncate()
函数。
【讨论】:
以上是关于在 iPhone 上使用 AudioQueue 录制/播放的主要内容,如果未能解决你的问题,请参考以下文章
iPhone AudioStreamer AudioQueue 实时 FFT
iPhone dev - AudioQueue 服务在后台录制