如何同时录制麦克风和钢琴
how to record microphone and piano at same time
我正在尝试制作一个应用程序,可以在 swift 中同时录制 AudioKit AKOscillatorBank 发出的钢琴声和来自麦克风的人声 4. 我尝试了 AVFoundation 的 AVAudioRecorder,但是当我弹钢琴时它失败了。我已经尝试使用 AVAudioSessionCategoryPlayAndRecord 但它似乎仍然不起作用:
func startRecording() {
fileName = String(format:"AudioFile%d.m4a",k)
k = k+1
let audioFilename = getDocumentsDirectory().appendingPathComponent(fileName)
address.append("\(audioFilename)")
print("adress = %s",address[num])
num = num + 1
let settings = [
AVFormatIDKey: Int(kAudioFormatMPEG4AAC),
AVSampleRateKey: 12000,
AVNumberOfChannelsKey: 2,
AVEncoderAudioQualityKey: AVAudioQuality.high.rawValue
]
do {
try session.setCategory(AVAudioSessionCategoryPlayAndRecord, with:AVAudioSessionCategoryOptions.defaultToSpeaker)
try session.setActive(true)
SoundRecorder = try AVAudioRecorder(url: audioFilename, settings: settings)
SoundRecorder.isMeteringEnabled = true
SoundRecorder.prepareToRecord()
SoundRecorder.delegate = self
SoundRecorder.record()
} catch {
}
}
我不知道我能做什么,有什么方法可以通过 swift 或 objective C 来完成吗?任何意见和建议将不胜感激。
要录制不同的 AudioKit 节点,请使用 AKNodeRecorder。 AudioKit 中包含一个“Recorder”示例项目:
我正在尝试制作一个应用程序,可以在 swift 中同时录制 AudioKit AKOscillatorBank 发出的钢琴声和来自麦克风的人声 4. 我尝试了 AVFoundation 的 AVAudioRecorder,但是当我弹钢琴时它失败了。我已经尝试使用 AVAudioSessionCategoryPlayAndRecord 但它似乎仍然不起作用:
func startRecording() {
fileName = String(format:"AudioFile%d.m4a",k)
k = k+1
let audioFilename = getDocumentsDirectory().appendingPathComponent(fileName)
address.append("\(audioFilename)")
print("adress = %s",address[num])
num = num + 1
let settings = [
AVFormatIDKey: Int(kAudioFormatMPEG4AAC),
AVSampleRateKey: 12000,
AVNumberOfChannelsKey: 2,
AVEncoderAudioQualityKey: AVAudioQuality.high.rawValue
]
do {
try session.setCategory(AVAudioSessionCategoryPlayAndRecord, with:AVAudioSessionCategoryOptions.defaultToSpeaker)
try session.setActive(true)
SoundRecorder = try AVAudioRecorder(url: audioFilename, settings: settings)
SoundRecorder.isMeteringEnabled = true
SoundRecorder.prepareToRecord()
SoundRecorder.delegate = self
SoundRecorder.record()
} catch {
}
}
我不知道我能做什么,有什么方法可以通过 swift 或 objective C 来完成吗?任何意见和建议将不胜感激。
要录制不同的 AudioKit 节点,请使用 AKNodeRecorder。 AudioKit 中包含一个“Recorder”示例项目: