问题描述
我正在尝试录制音频,例如来自 Macbook 的内置麦克风。这是我的代码:
func record() {
let sampleRate = 48000
let numChannels = 1
var @R_252_4045@ = AudioStreamBasicDescription(mSampleRate: Double(sampleRate),mFormatID: kAudioFormatLinearPCM,mFormatFlags: kAudioFormatFlagsNativeFloatPacked,mBytesPerPacket: UInt32(numChannels * MemoryLayout<UInt32>.size),mFramesPerPacket: 1,mBytesPerFrame: UInt32(numChannels * MemoryLayout<UInt32>.size),mChannelsPerFrame: UInt32(numChannels),mBitsPerChannel: UInt32(8 * MemoryLayout<UInt32>.size),mReserved: UInt32(0))
var inAQ: AudioQueueRef? = nil;
var status = AudioQueueNewInput(&@R_252_4045@,callback,nil,&inAQ)
print("AudioQueueNewInput returned " + status.description)
status = AudioQueueStart(inAQ!,nil)
print("AudioQueueStart returned " + status.description)
}
我从 this 答案中获取了大部分内容。但是,我收到了不同的错误。输出为:
AudioQueueNewInput 返回 0
2021-01-02 13:41:49.341243+0100 海洋[39484:6411401] [插件] AddInstanceForFactory:没有为 ID
2021-01-02 13:41:49.472141+0100 海洋 [39484:6411401] [AQ] AudioQueueObject.cpp:1179:BuildConverter: AudioConverterNew 返回 -50
AudioQueueStart 返回 -50
编辑:我在系统首选项中设置了不同的音频输入。我切换到内置麦克风,现在出现不同的错误:
AudioQueueNewInput 返回 0
2021-01-02 14:55:03.415688+0100 海洋[40044:6458085] [插件] AddInstanceForFactory:没有工厂注册 ID
2021-01-02 14:55:03.483443+0100 海洋[40044:6458085] [aqme] AQMEIO.cpp:352:AQMEIOManager_FindioUnit: error -66680 查找/初始化 Device.AQDefaultInput
AudioQueueStart 返回 -66680
-66680 表示设备无效。关于为什么会这样的任何提示?我更新了标题,但我还是想知道为什么其他音频输入拒绝这些参数。
解决方法
通过在我的目标的签名和功能中启用“音频输入”解决了这个问题。它实际上解决了所有音频输入设备的问题。