[英]Recording audio file using AVAudioEngine
我想使用AVAudioEngine錄制音頻文件。 所以它將從麥克風到輸出文件。 稍后我會添加一些效果。 但就目前而言,我只想讓它發揮作用。
任何人都可以向我提供步驟或示例代碼,以便我可以開始嗎?
這是我的簡單解決方案。 輸出文件將在文檔目錄中。 請注意,為簡潔起見,我刪除了錯誤處理。
var engine = AVAudioEngine()
var file: AVAudioFile?
var player = AVAudioPlayerNode() // if you need play record later
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
file = AVAudioFile(forWriting: URLFor("my_file.caf")!, settings: engine.inputNode.inputFormatForBus(0).settings, error: nil)
engine.attachNode(player)
engine.connect(player, to: engine.mainMixerNode, format: engine.mainMixerNode.outputFormatForBus(0)) //configure graph
engine.startAndReturnError(nil)
}
@IBAction func record(sender: AnyObject) {
engine.inputNode.installTapOnBus(0, bufferSize: 1024, format: engine.mainMixerNode.outputFormatForBus(0)) { (buffer, time) -> Void in
self.file?.writeFromBuffer(buffer, error: nil)
return
}
}
@IBAction func stop(sender: AnyObject) {
engine.inputNode.removeTapOnBus(0)
}
func URLFor(filename: String) -> NSURL? {
if let dirs : [String] = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.AllDomainsMask, true) as? [String] {
let dir = dirs[0] //documents directory
let path = dir.stringByAppendingPathComponent(filename)
return NSURL(fileURLWithPath: path)
}
return nil
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.