0

我正在使用音频队列从 iphone 的麦克风录制音频,并在检测到静音时停止录制(10 秒内没有音频输入),但我想丢弃音频文件中的静音。

AudioInputCallback函数中,我使用以下代码来检测静音:

AudioQueueLevelMeterState meters[1];
UInt32 dlen = sizeof(meters);
OSStatus Status AudioQueueGetProperty(inAQ,kAudioQueueProperty_CurrentLevelMeterDB,meters,&dlen);
if(meters[0].mPeakPower < _threshold)
{ // NSLog(@"Silence detected");}

但是如何删除这些数据包?或者有没有更好的选择?

4

2 回答 2

2

您可以通过先将其写入缓冲区来延迟写入,而不是从 AudioQueue 中删除数据包。可以通过将缓冲区放在 inUserData 中轻松定义缓冲区。

完成录制后,如果最后 10 秒没有静音,则将其写回要写入的任何文件。否则只需释放缓冲区。

于 2012-09-20T23:23:14.860 回答
0

记录并关闭文件后,只需打开并截断您不感兴趣的示例数据(注意:您可以使用 AudioFile/ExtAudioFile API 来正确更新任何相关的块/标题大小)。

于 2012-09-20T23:48:46.777 回答