[英]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.