gpt4 book ai didi

ios - AVAudioRecorder,AudioKit 问题,iOS 13.1.2

转载 作者:行者123 更新时间:2023-12-01 16:01:45 24 4
gpt4 key购买 nike

我不确定发生了什么,但鉴于 iOS 13.0 以上设备的某些音频设置,我似乎无法成功初始化 AVAudioRecorder 对象

编辑:在下面评论。但这适用于 13.0 和 13.1,但不适用于以下两个补丁,13.1.1 和 13.1.2。 ???

Xcode 11

swift 5

AudioKit pod v4.9(仅供引用,不要认为这是问题)

//音频设置

private let audioSettings = [
AVFormatIDKey : Int(kAudioFormatMPEG4AAC),
AVSampleRateKey : 44100,
AVNumberOfChannelsKey : 2,
AVEncoderAudioQualityKey : AVAudioQuality.medium.rawValue
]


do {
audioRecorder = try AVAudioRecorder(url: actualRecordingPath, settings: audioSettings)
audioRecorder?.record()
state = .recording
try AudioKit.start()
timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(timerDidUpdate), userInfo: nil, repeats: true)
} catch let error{
print("start recording", error.localizedDescription)
return
}

具体错误包括:

AVAudioEngine.mm:160 Engine@0x2835411b0: could not initialize, error = -10868

AVAEInternal.h:109 [AVAudioEngineGraph.mm:1397:Initialize: (err = AUGraphParser::InitializeActiveNodesInInputChain(ThisGraph, *GetInputNode())): error -10868 Blockquote

AudioKit+StartStop.swift:restartEngineAfterConfigurationChange(_:):160:error restarting engine after route change



我能够找到这个链接:

https://www.osstatus.com/search/results?platform=all&framework=all&search=-10868

它看起来可能不支持格式?

有人知道这里发生了什么吗?同样,在 iOS 13.0 上没有错误,只是在 13.0+ 上不起作用

最佳答案

我在 iOS 13.1.1 和 13.1.2 中遇到了同样的问题。我一直在使用 AudioKit 的 AKNodeRecorder在我的代码中,结果我忘了路由到 AudioKit.output我的 AKNodeRecorder 的节点正在录音。我所要做的就是在我的节点之后添加一个混音器或助推器,将新节点的增益设置为 0,然后将其路由到输出。

这是损坏的版本:

let mic = AKMicrophone()!
let recorder = AKNodeRecorder(node: mic)!
AudioKit.start()!

这是工作版本:

let mic = AKMicrophone()!
let recorder = AKNodeRecorder(node: mic)!
let recorderGain = AKBooster(mic, gain: 0)
AudioKit.output = recorderGain
AudioKit.start()!

解释为什么需要这样做:AudioKit 从输出节点向后遍历您的处理图。未连接到该图的任何内容都可能无法正确初始化,并且其行为未定义。您可以观察到这种未定义的行为,因为您的代码适用于较旧的 iOS 版本,但不适用于当前版本。

“但是 AKNodeRecorder 没有连接到我的图表”,您可能会说。事实证明,AKNodeRecorder 实际上并不是一个节点,而是一个水龙头。

水龙头可以位于节点的“顶部”。一个节点上总是只能点击一次。其他水龙头示例是 AKFFTTap .一般来说,点击会消耗音频,但不会生成任何音频,因此它们不能成为音频图的一部分 - 唯一不能生成任何内容的节点是最终节点 AudioKit.output .

换句话说,您的音频图应如下所示:
 recordingtap
|
mic -> gain0 -> output

请注意,仅当您不想在输出端听到麦克风时才需要增益。

关于ios - AVAudioRecorder,AudioKit 问题,iOS 13.1.2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58193040/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com