簡體   English   中英

從音頻隊列會話中刪除靜音在ios中錄制的音頻

[英]Removing Silence from Audio Queue session recorded audio in ios

我正在使用音頻隊列來錄制來自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");}

但是如何刪除這些數據包? 或者有更好的選擇嗎?

您可以通過先將緩沖區寫入緩沖區來延遲寫入,而不是從AudioQueue中刪除數據包。 通過將其放在inUserData中可以很容易地定義緩沖區。

完成錄制后,如果最后10秒未靜音,則將其寫回您要寫入的任何文件。 否則只需釋放緩沖區。

記錄並關閉文件后,只需打開並截斷您不感興趣的示例數據(注意:您可以使用AudioFile / ExtAudioFile API正確更新任何相關的塊/標頭大小)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM