2016-09-20 76 views
2

我正在構建一個需要做實時錄音的應用程序。我正在使用Swift作爲項目 - 因此無法使用Novocaine庫(因爲它有一些Obj-C++代碼)。在Swift中實時錄音

我需要的是獲取錄音(實時)的小塊,我可以處理或發送到我的websocket。是否有我可以用來實現這個的Swift庫?

除了從麥克風獲得實時音頻外,我還需要顯示實時波形。

  • 開始錄製
  • 獲取事件的每一個記錄的數據,在那裏我可以把這些字節到我的WebSocket的幾個字節。
  • 顯示音頻的波形。

讓我知道。

+0

我試過,因爲class關鍵字而無法包含.h文件。你有這個解決方案嗎?上述鏈接並未提供解決方案。 –

+0

我之前檢查過它。你能指出我使用AudioKit實際錄音的確切例子嗎?謝謝! –

回答

3

您不需要任何第三方工具從麥克風獲取音頻。它可以使用AVAudioEngine輕鬆設置。但是,爲了最大限度地減少網絡流量,我建議使用lame將原始PCM音頻流壓縮成mp3。

Here你可以找到最小的功能項目獲取麥克風輸入和壓縮成MP3。在這個例子中,項目mp3存儲到Documents文件夾中,所以你可以試着聽,確保它能正常工作。

從這一點你可以把MP3緩衝區和通過套接字發送。您也可以使用跛腳設置來改變質量等。

還有另一個分支no-lame,其中相同的功能實現沒有lame編碼。 Look here

+0

我試圖運行你的代碼,但最終出現了很多錯誤。我嘗試過使用XCode 7.3和XCode 8。老實說,我現在沒有在尋找一種壓縮機制 - 只是想從麥克風獲取現場音頻。你能不能給我剪去做這個? –

+0

這很奇怪,因爲我使用Xcode 8運行此項目時沒有任何問題。請發佈您在這裏遇到的確切錯誤,以便我們進行調查。無論如何,如果你不需要壓縮 - 在單獨的分支你可能會發現沒有壓縮部分相同的項目:https://github.com/vlider/Mic-recording-minimal-example/tree/no-lame –

+0

謝謝,我終於能夠讓你的分支沒有跛腳的工作。我得到一個可用的wav文件。但是,當我將AVAudioPCMBuffer轉換爲NSData並使用套接字連接發送給我的服務器時 - 服務器沒有獲得工作的wav文件。這裏有什麼可能是錯的? –