2016-09-20 167 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文件。这里有什么可能是错的? –