使用适用于iOS的AudioKit进行脱机音频渲染<;11
我有4个使用适用于iOS的AudioKit进行脱机音频渲染<;11,ios,swift,xcode,avfoundation,audiokit,Ios,Swift,Xcode,Avfoundation,Audiokit,我有4个AKPlayer节点,每个节点都连接到一些效果,最后它们混合在一起。 我想脱机渲染iOS>9.0的输出,但我不知道如何进行 编辑:我已经实现了渲染,并在iOS>11时将其分离 虽然iOS>11 renderToFile似乎做得很好,但对于iOS,如果要使用iOS11+,可以使用AudioKit的render to file: /// Render output to an AVAudioFile for a duration. /// - Parameters ///
AKPlayer
节点,每个节点都连接到一些效果,最后它们混合在一起。
我想脱机渲染iOS>9.0的输出,但我不知道如何进行
编辑:我已经实现了渲染,并在iOS>11时将其分离
虽然iOS>11 renderToFile似乎做得很好,但对于iOS,如果要使用iOS11+,可以使用AudioKit的render to file:
/// 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的render to URL函数:
@可用(iOS,已淘汰:11)
@可用(tvOS,已淘汰:11)
@可用(macOS,已淘汰:10.13)
开放类AKOfflineRenderNode:AKNode、AKComponent、AkiInput{
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)
}
你试过什么?最好提供一个@JerodJohnson我试过AKOfflineRenderNode,但它不支持iOS<11.0我已经编辑了我的问题,如果你看看@Aurelius就好了
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)
}