簡體   English   中英

實時音頻處理Swift

[英]Real time audio processing Swift

我們的應用程序不斷記錄和處理來自iPhone麥克風的音頻。

目前,我使用AVAudioRecorder和AVFoundation並將音頻輸入輸出錄制到8秒的“ .wav”文件中。

相反,我想連續將音頻輸入記錄到緩沖區並處理8秒長的緩沖區塊。

如何將音頻輸入記錄到緩沖區中,如何從那里讀取8秒長的塊?

謝謝!

您可以通過多種方式接收原始PCM(在AV Foundation中:來自AVCaptureDevice的AVCaptureAudioDataOutput或插入了處理分接頭的AVAudioEngine;在Audio Toolbox中:Audio Queue Services,RemoteIO音頻單元),然后編寫文件,您可以使用音頻工具箱的AudioFile或ExtAudioFile,只計算您已寫入的幀數並確定何時開始一個新的8秒文件。

就像節奏節奏拳頭在上面提到的那樣,如果您執行以下操作會更安全

捕獲回調--pushes-to->環形緩沖區<-pulls-from--文件寫入代碼

因為當您關閉一個文件並打開另一個文件時,捕獲回調仍將進入,並且如果您阻塞文件I / O,則很有可能會在地板上丟掉一些數據。

我想另一種方法是從回調中填充內存中的8秒緩沖區,當緩沖區滿時,讓另一個線程在分配新緩沖區並開始記錄的同時寫入該文件(顯然,文件編寫器會丟棄該緩沖區)。完成后的舊緩沖區)。

編輯:另外,在您的問題中,我沒有看到任何有關Swift的信息,但是從Swift或C / Obj-C可以正常運行。

暫無
暫無

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

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