问题描述
我在ARSession期间捕获了一些CMSampleBuffer音频。我想将其另存为文件,以便稍后在应用程序中由AVAudioPlayer播放。
该应用程序正在运行,但音频播放器处于静音状态,并且我得到的错误是Domain=NSOSStatusErrorDomain Code=2003334207 "(null)"
检查是否已存在该文件,然后返回true,所以我认为问题在于如何创建该文件。数据未正确保存,或者我使用的格式设置不兼容。
启动/停止AVAssetWriter的代码:
func startRecording() {
let directoryURL = FileManager.default.urls(for: .documentDirectory,in: .userDomainMask)[0]
let audioOutputURL = URL(fileURLWithPath: "audio",relativeTo: directoryURL).appendingPathExtension("caf")
do {
assetWriter = try AVAssetWriter(outputURL: audioOutputURL,fileType: AVFileType.caf)
} catch {
print(error)
}
let audioOutputSettings = [
AVFormatIDKey : kAudioFormatMPEG4AAC,AVNumberOfChannelsKey : 2,AVSampleRateKey : 44100.0,AVEncoderBitRateKey : 16000.0,] as [String : Any]
audioInput = AVAssetWriterInput(mediaType: AVMediaType.audio,outputSettings: audioOutputSettings)
audioInput?.expectsMediaDataInRealTime = true
assetWriter?.add(audioInput!)
assetWriter?.startWriting()
}
func stopRecording() {
assetWriter?.finishWriting(completionHandler: {print("file finished writing")})
}
ARSession委托方法,其中生成CMSampleBuffer:
func session(_ session: ARSession,didOutputAudioSampleBuffer audioSampleBuffer: CMSampleBuffer) {
let sourceTime = CMSampleBufferGetPresentationTimeStamp(audioSampleBuffer)
assetWriter?.startSession(atSourceTime: sourceTime)
audioInput?.append(audioSampleBuffer)
}
谁能知道问题出在哪里(知道我可能有几个)?
谢谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)