使用AVFoundation录制和播放音频

大家好! 过了一分钟,但我想分享我正在使用的应用程序的一部分,该应用程序利用了苹果的AVFoundation框架。

该应用程序的功能类似于MPC Player,通常称为鼓机。 该应用程序上的按钮将对应于不同的录音,这些录音是使用iPhone的麦克风捕获的。 最终的结果是一个数字节拍器,能够录制和播放人声以及各种其他声音!

为了实现这个目标,我开始熟悉Apple的AVFoundation。 顾名思义,这是Apple为该应用程序的音频和视频组件奠定基础的框架。 这包括用于视频播放的AVPlayer以及用于与音频相关的所有内容的AVAudio。

AVAudio可以一次或同时播放各种音频文件,还可以控制所有参数,例如播放级别,立体声定位,倒带和快进,甚至可以从播放级别的计量中获取数据。 此外,AVAudioPlayer带有一系列音频效果,包括混响,延迟,失真,EQ,音高控制和CoreMIDI功能。 凭借苹果公司开发强大的数字音频工作站(DAW)(例如GarageBand和Logic)的经验,我很高兴看到内置Swift框架必须提供的功能!

但是,让我们不要超越自己。 第一步:录制音频。 为此,我们需要将AVAudio导入到Xcode项目中,使ViewController符合几个协议,并创建以下变量:

不必担心初始化,我们将在配置音频的以下函数中进行初始化。 本质上,它将要做的是创建一个文件路径和名称来存储音频,创建一个音频设置字典,并执行Do-Try-Catch初始化我们的audioRecorder变量。 您可以在viewDidLoad()中调用此函数,代码如下:

接下来,我们需要一个函数来检索特定URL路径上的文件,然后通过audioPlayer播放该文件。 让我们调用第一个getFileURL()-> URL,并在设置我们的audioPlayer的下一个参数中调用它。 每次我们要播放audioPlayer时,都会调用此函数。

最后,我们需要设置一对按钮,以便在点击时调用这些功能,一个按钮进行录制,另一个按钮进行播放。 为了确保这两个功能不重叠,我在这些按钮上设置了标签,以便如果音频已经在录制或播放中,则在下一次点击时将停止

就是这样! 在您的计算机上尝试一下; 如果您按下“录音”按钮,则录音应保存到特定的音频路径,然后在按下“播放”按钮后将调用该音频路径进行播放。

对我来说,下一步是添加多个路径来录制多个按钮的音频,并尝试添加诸如混响,延迟和音高变化等效果,以便可以雕刻和丰富简单的录音以模仿深沉的低音或清晰的声音。小鼓在一个开放的大厅里。 Ray Wenderlich还提供了这个引人入胜的AudioKit教程,阐明了Swift的振荡器和声音合成功能。

显然,Swift内置了一套技术插件和框架,供有音乐爱好的开发人员使用,我期待探索这些工具并与社区分享。

编码愉快!