如何解决AudioKit 5.0b - 无法将 PCM 转换为 m4a
我正在使用 AudioKit 5.0 beta 来规范化一个简短的录音(3 秒)并将其转换为 m4a。
原始输入文件为wav,16000采样率,1声道。我将其读入缓冲区,对缓冲区进行标准化,然后将结果输出到 32 位 wav 文件。剩下的步骤是将输出文件转换为最终格式,必须是 16 位 m4a。
func processRecording(resultHandler: @escaping (AudioProcessingResult) -> Void) {
var normalizedFile: AVAudioFile!
let originalFile = try! AVAudioFile(forReading: FileManager.audioTempFileURL)
let buffer = AVAudioPCMBuffer(pcmFormat: originalFile.processingFormat,frameCapacity: AVAudioFrameCount(originalFile.length))!
try! originalFile.read(into: buffer)
let normalizedBuffer = buffer.normalize()!
normalizedFile = try! AVAudioFile(url: FileManager.normalized32AudioTempFileURL,fromBuffer: normalizedBuffer)
normalizedFile = nil // let file go out of scope to close it
var converterOptions = FormatConverter.Options()
converterOptions.format = "m4a"
converterOptions.bitDepth = UInt32(16)
converterOptions.channels = UInt32(1)
converterOptions.bitRate = 64000
let finalAudioConverter = FormatConverter(inputURL: FileManager.normalized32AudioTempFileURL,outputURL: FileManager.processedAudioFileURL,options: converterOptions)
// convert to final format and send to result handler.
finalAudioConverter.start { error in
if let error = error {
resultHandler(.error(error.localizedDescription))
} else {
resultHandler(.success)
}
}
}
}
标准化效果很好,标准化的文件输出正常,但使用 FormatConverter
将该文件转换为 16 位 m4a 失败。我收到一条 AudioCodecInitialize failed
消息到控制台,它抛出 Cannot Encode Media
错误。
但是,如果我指定 converterOptions.format = "wav"
而不是 "m4a"
效果很好。
我在 MacOS 11.1 上使用 Xcode 12.3,为 iOS 14.x 构建。
任何想法可能是什么问题?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。