iphone - 在 iPhone 上使用 AudioQueue 录制/播放

标签 iphone objective-c audio-recording audioqueueservices

我目前正在 iPhone 上使用音频队列来录制和播放音频。

我想做的是录制一些音频,允许用户暂停录制队列,并在音频中来回搜索以选择他们可以再次开始录制的位置。

我通过将播放 AudioQueueBuffer 大小设置得足够小来解决搜索问题,以便播放音频队列回调发生的速率允许用户使用 slider 控件来回调整 slider 时收听音频.

我认为我可以通过设置从音频录制队列回调调用的 AudioFileWritePackets 函数的 inStartingPacket 参数来实现在新位置的录制。

问题是这只会在之前录制的音频上插入音频。文件长度显然不会改变,因此如果用户向后退并录制比以前更少的音频,则在新录制的音频结束后旧音频仍然存在。

有没有办法让 AudioFile 在用户开始插入新音频时截断,有没有其他方法可以删除从插入位置开始的旧音频,或者有更好的方法关于这个任务?

谢谢

最佳答案

我也有同样的疑问。我目前的方法是将新音频记录到一个单独的文件中,然后在完成后将第一个文件的第一部分与第二个文件连接起来,将结果写入第三个文件,然后将第三个文件重命名为第一个文件并删除第二个文件。连接操作需要使用 AudioFile API 编写自定义但相当简单的函数。

我也很想听到任何更开明的想法,或者看到一个 AudioFileTruncate() 函数。

关于iphone - 在 iPhone 上使用 AudioQueue 录制/播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2650990/

相关文章:

ios - 解析 : Is it possible to prefill local datastore?

ios - 更新到 Xcode 8 时的奇怪行为

iphone - 如何查找访问量最高的 20 个项目并将其添加为收藏夹

android - 以 AMR 文件格式录制音频

javascript - 应用发送 POST 请求两次

ios - Chartboost 最新的 iOS SDK 在使用示例代码时崩溃

ios - UIApplicationDidBecomeActiveNotification 和 UIApplicationWillResignActiveNotification 并不总是在 Unity iOS App 中触发

objective-c - objective-c (math.h) 中的 tan ( pi/2 ) 不是未定义的

iPhone 允许其他应用程序在录制音频/Shazam 时播放音频

java - Android 如何使用 MediaRecorder 录制音频并输出为原始 PCM?