Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 音频套件-录制默认输入(麦克风),而不将其发送到输出_Ios_Swift_Audio Recording_Audiokit - Fatal编程技术网

Ios 音频套件-录制默认输入(麦克风),而不将其发送到输出

Ios 音频套件-录制默认输入(麦克风),而不将其发送到输出,ios,swift,audio-recording,audiokit,Ios,Swift,Audio Recording,Audiokit,这可能是一个非常愚蠢的问题,因为我对AudioKit和IOS音频都是新手。我试图实现的是从我的麦克风录制一个剪辑(或者只是一个简单的文件录制) 我不希望我的应用程序将输入(从麦克风)直接发送到输出,我的意思是,我希望在录制或使用我的应用程序时麦克风静音(主要是因为我在调试时收到反馈,例如,当用户使用耳机时,我希望取消静音) 尝试在我的AppDelegate.swift->application函数中播放AKSettings.audioInputEnabled和AKSettings.default

这可能是一个非常愚蠢的问题,因为我对AudioKit和IOS音频都是新手。我试图实现的是从我的麦克风录制一个剪辑(或者只是一个简单的文件录制)

我不希望我的应用程序将输入(从麦克风)直接发送到输出,我的意思是,我希望在录制或使用我的应用程序时麦克风静音(主要是因为我在调试时收到反馈,例如,当用户使用耳机时,我希望取消静音)

尝试在我的
AppDelegate.swift->application
函数中播放
AKSettings.audioInputEnabled
AKSettings.defaultToSpeaker
(这是正确的位置吗?)。还尝试通过扩音器连接麦克风并将增益设置为0,但随后录制了空文件

也许我没有使用正确的术语,所以如果你纠正我,我会很高兴

这是我的一段代码

AppDelegate.swift

AKSettings.defaultToSpeaker = true
AKSettings.audioInputEnabled = false
try! AKSettings.setSession(category: .playAndRecord)
AKSettings.defaultToSpeaker = true
AKSettings.audioInputEnabled = true
try! AKSettings.setSession(category: .playAndRecord)
记录代码(使用clipRecorder,但我猜这个问题也适用于常规记录器):

非常感谢音响工具包的朋友们,如果不麻烦的话,我也希望你们能解释一下我做错了什么,为什么做错了

编辑:按照Aurelius的要求提供当前代码,问题是如果我将增益设置为0,我确实听不到麦克风反馈,但所有记录都是完全静音

AppDelegate.swift

AKSettings.defaultToSpeaker = true
AKSettings.audioInputEnabled = false
try! AKSettings.setSession(category: .playAndRecord)
AKSettings.defaultToSpeaker = true
AKSettings.audioInputEnabled = true
try! AKSettings.setSession(category: .playAndRecord)
ViewController.swift

override func viewDidLoad() {
    super.viewDidLoad()
    silence = AKBooster(mic, gain: 0)
    //mixer = AKMixer(silence)
    AudioKit.output = silence
    AudioKit.start()
    clipRecorder = AKClipRecorder(node: silence!)
    clipRecorder?.play()
}

@IBAction func recordButtonPressed(_ sender: Any) {
    print("perssed")
    do {
        try clipRecorder?.recordClip(time: (clipRecorder?.currentTime)!, duration: 3.0, tap: nil, completion: {url,_,_ in
            print("done")
        })
    } catch {
        print("error")
    }
}
override func viewDidLoad() {
    super.viewDidLoad()
    silence = AKBooster(mic)
    clipRecorder = AKClipRecorder(node: silence!)
    silence.gain = 0
    AudioKit.output = silence
    AudioKit.start()

    clipRecorder?.play()
}

@IBAction func recordButtonPressed(_ sender: Any) {
    print("perssed")
    do {
        try clipRecorder?.recordClip(time: (clipRecorder?.currentTime)!, duration: 3.0, tap: nil, completion: {url,_,_ in
            print("done")
        })
    } catch {
        print("error")
    }
}
编辑2:好吧,经过几个小时的自我斗争,我发现了问题所在,奥雷利乌斯确实是对的,这只是事情的顺序。录音机当然需要在静音(增益=0)前配备助推器,录音机获得正确的数值,在进入扬声器时静音。对于我上面提供的示例,修复非常简单- ViewController.swift

override func viewDidLoad() {
    super.viewDidLoad()
    silence = AKBooster(mic, gain: 0)
    //mixer = AKMixer(silence)
    AudioKit.output = silence
    AudioKit.start()
    clipRecorder = AKClipRecorder(node: silence!)
    clipRecorder?.play()
}

@IBAction func recordButtonPressed(_ sender: Any) {
    print("perssed")
    do {
        try clipRecorder?.recordClip(time: (clipRecorder?.currentTime)!, duration: 3.0, tap: nil, completion: {url,_,_ in
            print("done")
        })
    } catch {
        print("error")
    }
}
override func viewDidLoad() {
    super.viewDidLoad()
    silence = AKBooster(mic)
    clipRecorder = AKClipRecorder(node: silence!)
    silence.gain = 0
    AudioKit.output = silence
    AudioKit.start()

    clipRecorder?.play()
}

@IBAction func recordButtonPressed(_ sender: Any) {
    print("perssed")
    do {
        try clipRecorder?.recordClip(time: (clipRecorder?.currentTime)!, duration: 3.0, tap: nil, completion: {url,_,_ in
            print("done")
        })
    } catch {
        print("error")
    }
}

我想你需要把助推器放在你正在记录的节点之后。您希望录制常规音量,然后再通过增益设置为零的助推器发送。

谢谢Aurelius,当应用程序运行时(不仅仅是录制时),我仍然能听到麦克风的反馈。尝试播放助推器的位置,但也必须更改
AudioKit.output=self.mixer,AudioKit.start()
,我感觉我做错了什么。如果助推器的增益为零,我看不出你怎么能听到任何声音。你能分享你的项目吗?再次感谢Aurelius,我会在我回家后提供代码,我现在看到了你写的这个教程,我想,如果我理解你上面的答案,这个教程/示例应该是我需要的吧?我可以看到它在这里使用了你说的助推器。嗨,奥雷利乌斯,提供的代码,仍然无法让它录制声音,也无法获得反馈。如果你能帮我,我将不胜感激,谢谢!好的,找出我做错了什么,为我的问题提供正确的代码(Edit2),非常感谢Aurelius。