0Pricing
Swift Academy · 课时

录制音频

将麦克风输入录制到文件。

录制音频 是 CoddyKit 上的免费 Swift Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Swift Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Swift Academy 课程共包含 4 节课。

使用 AVAudioRecorder 录音

AVAudioRecorder 可以通过极少的配置将麦克风音频采集到文件中,非常适合语音备忘录和简单录音机。

import AVFoundation

麦克风权限

录音需要用户授权。请将 NSMicrophoneUsageDescription 添加到 Info.plist,并在录音前请求访问权限。

AVAudioApplication.requestRecordPermission { granted in
    if granted { /* start recording */ }
}

配置音频会话

将会话类别设置为 .record 或 .playAndRecord,并将其激活,使系统将麦克风输入路由到您的应用。

let session = AVAudioSession.sharedInstance()
try session.setCategory(.playAndRecord)
try session.setActive(true)

选择文件 URL

录音会写入文件。请在文稿目录中构建一个 URL,并使用合适的扩展名,例如 .m4a。

let dir = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
let url = dir.appendingPathComponent("memo.m4a")

录音机设置

设置通过包含 AVAudioRecorder 键的字典定义格式、采样率、声道数和质量。

let settings: [String: Any] = [
    AVFormatIDKey: Int(kAudioFormatMPEG4AAC),
    AVSampleRateKey: 44100,
    AVNumberOfChannelsKey: 1,
    AVEncoderAudioQualityKey: AVAudioQuality.high.rawValue
]

创建录音机

使用 URL 和设置初始化 AVAudioRecorder,然后调用 prepareToRecord() 分配资源。

let recorder = try AVAudioRecorder(url: url, settings: settings)
recorder.prepareToRecord()

开始与停止

调用 record() 开始录音,调用 stop() 完成录音。停止操作会完成写入并关闭音频文件。

recorder.record()
// later
recorder.stop()

定时录音与暂停录音

您可以使用 record(forDuration:) 按固定时长录音,也可以通过 pause() / record() 恢复录音并继续写入同一个文件。

recorder.record(forDuration: 30) // stop after 30s

电平计量

启用 isMeteringEnabled,然后调用 updateMeters() 并读取 averagePower(forChannel:),即可驱动实时电平表。

recorder.isMeteringEnabled = true
recorder.updateMeters()
let power = recorder.averagePower(forChannel: 0) // in dB

代理

遵循 AVAudioRecorderDelegate,即可得知录音是否成功完成,或是否发生编码错误。

func audioRecorderDidFinishRecording(_ recorder: AVAudioRecorder,
                                     successfully flag: Bool) {
    print("finished: \(flag)")
}

播放录音结果

录音完成后,使用指向同一 URL 的 AVAudioPlayer 播放文件,这是快速验证采集结果的方法。

let player = try AVAudioPlayer(contentsOf: url)
player.play()

快速检查:录音

请检验您对音频录制的理解。

回顾:录制音频

请求权限并激活用于录音的 AVAudioSession 后,AVAudioRecorder 会将麦克风音频采集到文件中。请提供 URL 和设置字典(格式、采样率、声道数、质量),调用 prepareToRecord(),然后调用 record()/stop()。

启用电平计量以显示实时电平,使用代理处理完成事件,并通过 AVAudioPlayer 播放录音进行验证。

常见问题解答

「录制音频」课时是免费的吗?

是的 — 「录制音频」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Swift Academy 课程的其余内容,请升级到 CoddyKit PRO。 Swift Academy 课程共包含 4 节课。

「录制音频」这节课中我会学到什么?

将麦克风输入录制到文件。 你通过在浏览器中直接运行的动手代码来练习 Swift Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Swift Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Swift Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「录制音频」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Swift Academy 课中编写并运行代码吗?

能。每节 Swift Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 使用 AVPlayer 播放媒体
  2. 录制音频
  3. AVAsset 与 Composition
  4. 在 SwiftUI 中嵌入播放器
← 返回 Swift Academy