首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在立体声会话中使用单声道AKNode?

如何在立体声会话中使用单声道AKNode?
EN

Stack Overflow用户
提问于 2020-05-01 01:30:56
回答 1查看 72关注 0票数 0

在将AKMicrophone记录输出到单个通道的AKSettings.channelCount = 2的环境中。所以,我希望能够理解如何在AudioKit中正确地修补或混合音频,谢谢?

让我们看看下面的例子,记住我把它保持在最低限度,所以把它看作是“伪代码”,如下所示:

代码语言:javascript
复制
        AKSettings.bufferLength = .medium
        AKSettings.channelCount = 2
        AKSettings.setSession(category: .playAndRecord)
        AKNodeRecorder(node: microphone) // or AKMicrophone >>> AKMixer            
        mainMixer.connect(input: mic) // is AKMixer()
        AudioKit.output = mainMixer
        AudioKit.start()

播放器(AKPlayer)设置非常简单:

代码语言:javascript
复制
    player.load(audioFile: audioFile)
    player.isLooping = false
    player.buffering = .always
    player >>> mainMixer

导致recorded microphone audio被“摇摄”左转,或在左声道播放!我更愿意确定它是如何工作的,以便能够做出正确的选择,因为在模拟混音器中,麦克风将连接到单声道,在混音中居中,除非左右摇摆。另外,我不想把AKSettings.channelCount改成1,因为我也想让音轨输出立体声。

EN

回答 1

Stack Overflow用户

发布于 2020-05-01 01:56:07

我专门为麦克风找到了几个解决方案,但当然,如果能找到一本关于如何在AudioKit中正确修补东西的好读物就更好了:)

第一个可行的解决方案是使用此处声明的AVAudioFormat (https://audiokit.io/docs/Classes/AKMicrophone.html#/c:@M@AudioKit@objc(cs)AKMicrophone(im)initWith,如下所示:

代码语言:javascript
复制
var audioFormat: AVAudioFormat = AVAudioFormat(standardFormatWithSampleRate: 44100, channels: 1)!
var mic = AKMicrophone(with: audioFormat)

我们也可以使用AKStereoFieldLimiter,并将通道数限制为一个:

代码语言:javascript
复制
AKStereoFieldLimiter(mic, amount: 1)

然后,您可以将其传递给AKMixer,并将其修补给AKNodeRecorder

可能还有其他方法,但到目前为止我只知道这些。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61529361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档