You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cocoa(macOS)中AVAudioRecorder正确用法:生成录音文件无内容如何解决

问题原因
  • 未主动申请麦克风权限:macOS 10.14及以上版本对麦克风权限做了严格限制,GUI应用必须先显式向用户申请麦克风使用权限,未获得授权时AVAudioRecorder会静默录制空音频,不会抛出任何错误提示。Playground运行时会自动触发权限申请流程,因此相同代码可以正常运行。
  • 缺少Info.plist权限声明:即使写了权限申请逻辑,如果没有在项目Info.plist中添加NSMicrophoneUsageDescription(麦克风使用权限描述)键,填入向用户说明录音用途的文案,系统会直接拒绝权限申请。
  • 录音调用时机错误:权限申请是异步操作,你当前的代码没有等待权限授权结果返回就直接启动录音,大概率是权限还没申请完成就已经开始录制,最终生成空白文件。
正确实现步骤
  1. 首先打开项目Info.plist,右键选择「Add Row」,添加NSMicrophoneUsageDescription项,Value栏填写如「需要使用麦克风录制音频」的说明文案。
  2. 调整录音逻辑,先申请权限,拿到授权后再启动录音,示例代码如下:
import AVFoundation

var recorder : AVAudioRecorder?
// 替换为你实际的音频存储路径
let filename = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0].appendingPathComponent("voiceRec.m4a")

func startRecording() {
    // 先请求麦克风权限
    AVCaptureDevice.requestAccess(for: .audio) { [weak self] granted in
        guard granted else {
            print("用户拒绝了麦克风权限,无法录音")
            return
        }
        // 权限申请通过,在主线程执行录音逻辑
        DispatchQueue.main.async {
            do {
                let settings = [
                    AVFormatIDKey: Int(kAudioFormatMPEG4AAC),
                    AVSampleRateKey: 12000,
                    AVNumberOfChannelsKey: 1,
                    AVEncoderAudioQualityKey: AVAudioQuality.high.rawValue
                ]
                guard let filename = self?.filename else { return }
                let rec = try AVAudioRecorder(url: filename, settings: settings)
                rec.delegate = self
                rec.prepareToRecord()
                rec.isMeteringEnabled = true
                rec.record()
                self?.recorder = rec
            } catch {
                print("录音初始化失败:\(error.localizedDescription)")
            }
        }
    }
}

@IBAction func stop(sender: AnyObject) {
    self.recorder?.stop()
    self.recorder = nil
}
  1. 确认Signing & Capabilities中已经勾选「Audio Input」选项,你当前的配置这一项是正确的,不需要调整。

按上述步骤调整后即可正常生成有内容的录音文件。

内容的提问来源于stack exchange,提问作者Erik Engheim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 06:36:03