Если вы хотите использовать iOS11 +, вы можете использовать визуализацию AudioKit в файл:
/// Render output to an AVAudioFile for a duration.
/// - Parameters
/// - audioFile: An file initialized for writing
/// - seconds: Duration to render
/// - prerender: A closure called before rendering starts, use this to start players, set initial parameters, etc...
///
@available(iOS 11.0, macOS 10.13, tvOS 11.0, *)
public func renderToFile(_ audioFile: AVAudioFile, seconds: Double, prerender: (() -> Void)? = nil) throws {
Если вам нужна поддержка iOS9 +, используйте функцию рендеринга AKOfflineRenderNode в URL:
@ доступно (iOS устарела: 11)
@available (tvOS, устарело: 11)
@available (macOS, устарел: 10.13)
открытый класс AKOfflineRenderNode: AKNode, AKComponent, AKInput {
public typealias AKAudioUnitType = AKOfflineRenderAudioUnit
public static let ComponentDescription = AudioComponentDescription(effect: "mnrn")
private var internalAU: AKAudioUnitType?
open var internalRenderEnabled: Bool {
get { return internalAU!.internalRenderEnabled }
set { internalAU!.internalRenderEnabled = newValue }
}
open func renderToURL(_ url: URL, seconds: Double, settings: [String: Any]? = nil) throws {
return try internalAU!.render(toFile: url, seconds: seconds, settings: settings)
}