Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/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 暂停音频队列的录制回调_Iphone_Cocoa_Cocoa Touch_Avaudiorecorder_Audioqueueservices - Fatal编程技术网

Iphone 暂停音频队列的录制回调

Iphone 暂停音频队列的录制回调,iphone,cocoa,cocoa-touch,avaudiorecorder,audioqueueservices,Iphone,Cocoa,Cocoa Touch,Avaudiorecorder,Audioqueueservices,我对AudioQueue有一个基本的怀疑,我使用AudioQueue来录制,并且基本上遵循SpeakHere应用程序。我发现,每当我在AudioQueue对象上使用api:AudioQueuePause暂停录制时,录制不会立即暂停。AudioQueues中是否有一个回调通知学员音频录制已暂停 还是我错误地理解了AudioQueuePauseapi是异步的?文档中描述的API是: OSStatus AudioQueuePause ( AudioQueueRef inAQ ); 它确实返回O

我对AudioQueue有一个基本的怀疑,我使用AudioQueue来录制,并且基本上遵循SpeakHere应用程序。我发现,每当我在AudioQueue对象上使用api:
AudioQueuePause
暂停录制时,录制不会立即暂停。AudioQueues中是否有一个回调通知学员音频录制已暂停

还是我错误地理解了
AudioQueuePause
api是异步的?文档中描述的API是:

OSStatus AudioQueuePause (
   AudioQueueRef inAQ
);
它确实返回
OSStatus
,但其中哪一个表示调用成功,以及它们(OSStatus)是否表示调用是同步的

谢谢, 拉吉

你可以试试

AudioQueueGetCurrentTimeAudioQueueDeviceGetCurrentTime


一旦用户界面上出现“暂停请求”。然后,由于异步AudioQueuePause命令,您可以忽略/删除在“暂停请求”之后录制的其他样本。

感谢您的回复,您的建议是可以做到的。但是我不明白AudioQueueGetCurrentTime和AudioQueueDeviceGetCurrentTime的用途是什么?你能详细说明一下吗?我只是建议你跟踪用户单击“暂停”(在用户界面上)时的“准确时间”。此时,调用AudioQueue时间函数并存储该值。然后,您可以返回并删除“超过”该时间点的所有样本。特别是,由于您的样本以X采样率存储在N个样本中(例如44.1kHz下的1000000个样本约为22.6秒)。如果用户单击“暂停”按钮,AQ time函数告诉您“我在样本999000,那么您可以在999001之后删除所有样本”。AQ time函数可以返回以秒为单位的时间和以样本为单位的时间。