在处理文件并将其保存到光盘之前,我让用户播放音高效果并实时收听更改.
这是我如何做实时的东西:
let audioSession = AVAudioSession.sharedInstance() audioSession.setcategory(AVAudioSessioncategoryPlayback,error: nil) audioSession.setActive(true,error: nil) audioEngine = AVAudioEngine() audiofile = AVAudiofile(forReading: audioUrl!,error: nil) audioPlayerNode = AVAudioPlayerNode() audioEngine.attachNode(audioPlayerNode) changePitchEffect = AVAudioUnitTimePitch() changePitchEffect.pitch = 1.0 // default audioEngine.attachNode(changePitchEffect) audioEngine.connect(audioPlayerNode,to: changePitchEffect,format: nil) audioEngine.connect(changePitchEffect,to: audioEngine.outputNode,format: nil) let frameCapacity = UInt32(audiofile.length) let buffer = AVAudioPCMBuffer(PCMFormat: audiofile.processingFormat,frameCapacity: frameCapacity) if audiofile.readIntoBuffer(buffer,error: nil) { audioEngine.startAndReturnError(nil) audioPlayerNode.scheduleBuffer(buffer,atTime: nil,options: .Loops,completionHandler: nil) audioPlayerNode.play() // start playing in a loop }
然后使用UiSlider我让用户在循环中聆听音频时更改音高的值.
所以当用户完成播放并点击下一个按钮时,我需要保存音频文件与所选的音高值.
我的问题是,如何用音高效果创建新的音频文件?
我不想在用户正在听音频和播放音高效果时录制,我只想输出最终的结果(当然不要播放文件)
解决方法 由于在问题的标题中使用AVAudioSession并不是明确的要求,所以有两种可能的答案:通过节点播放(使用AVAudioSession)
在节点上安装一个水龙头.见AV Foundation Framework Reference.
audioPlayerNode.installTapOnBus(0,bufferSize:frameLength,format: audioinputNode.outputFormatForBus(0),block: {(buffer,time) in let channels = UnsafeArray(start: buffer.floatChannelData,length: Int(buffer.format.channelCount)) let floats = UnsafeArray(start: channels[0],length: Int(buffer.frameLength)) for var i = 0; i < Int(self.audioBuffer.frameLength); i+=Int(self.audiomixerNode.outputFormatForBus(0).channelCount) { // process }})
AVAudioSession tap机制需要播放.更多关于通过@matt在Stack Overflow answer上播放的录音.
使用AudioUnit(不带AVAudioSession)
使用AudioSessionInitialize初始化AudioSession以播放&记录,设置阅读&写入流,并传递指向您的数据处理代码的AURenderCallbackStruct.但是,这样做不能使您无法使用AVAudioUnitTimePitch.您可以在此How to do realtime recording with effect processing on iOS文章中找到有关此解决方案的更多信息.
总结以上是内存溢出为你收集整理的ios – 添加效果后导出音频文件全部内容,希望文章能够帮你解决ios – 添加效果后导出音频文件所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)