AVAudioSession
существует для управления звуковыми ограничениями iOS.Эти ограничения не существуют в macOS, поэтому вам не нужно AVAudioSession
.Ура!
Вы можете записывать аудио в файл с помощью AVAudioEngine
и AVAudioFile
:
import Cocoa
import AVFoundation
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
@IBOutlet weak var window: NSWindow!
let audioEngine = AVAudioEngine()
var outputFile: AVAudioFile? = nil
func applicationDidFinishLaunching(_ aNotification: Notification) {
// If sandboxed, don't forget to turn on Microphone in Capabilities > App Sandbox
let input = audioEngine.inputNode
let bus = 0
let inputFormat = input.inputFormat(forBus: bus)
let outputURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!.appendingPathComponent("out.caf")
print("writing to \(outputURL)")
outputFile = try! AVAudioFile(forWriting: outputURL, settings: inputFormat.settings, commonFormat: inputFormat.commonFormat, interleaved: inputFormat.isInterleaved)
input.installTap(onBus: bus, bufferSize: 512, format: inputFormat) { (buffer, time) in
try! self.outputFile?.write(from: buffer)
}
try! audioEngine.start()
DispatchQueue.main.asyncAfter(deadline: .now()+5) {
print("Finish")
self.audioEngine.stop()
self.outputFile = nil
}
}
}