Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在iPhone上使用AudioQueue录制/播放_Iphone_Objective C_Audio Recording_Audioqueueservices - Fatal编程技术网

在iPhone上使用AudioQueue录制/播放

在iPhone上使用AudioQueue录制/播放,iphone,objective-c,audio-recording,audioqueueservices,Iphone,Objective C,Audio Recording,Audioqueueservices,我目前正在使用iPhone上的音频队列录制和播放音频 我想能够做的是录制一些音频,允许用户暂停录制队列,并在音频中来回搜索,以选择一个位置,从那里他们可以再次开始录制 通过使播放音频队列缓冲区大小足够小,以便播放音频队列回调的发生率允许用户在来回调整滑块时使用滑块控件来听到音频,我已经克服了查找问题 我想我可以通过设置AudioFileWritePackets函数的inStartingPacket参数来实现新位置的录制,该函数是我从音频录制队列回调中调用的 问题是,这只会在先前录制的音频上插入音

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

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

通过使播放音频队列缓冲区大小足够小,以便播放音频队列回调的发生率允许用户在来回调整滑块时使用滑块控件来听到音频,我已经克服了查找问题

我想我可以通过设置AudioFileWritePackets函数的inStartingPacket参数来实现新位置的录制,该函数是我从音频录制队列回调中调用的

问题是,这只会在先前录制的音频上插入音频。文件长度显然没有改变,因此如果用户向后走,录制的音频比以前少,那么在新录制的音频结束后,旧音频仍然保留

有没有办法让音频文件在用户开始插入新音频时截断,有没有其他方法可以从插入位置开始删除旧音频,或者有没有更好的方法来执行此任务


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

我也很想听到更多有启发性的想法,或者看看
AudioFileTruncate()
函数