问题描述
我想在我的项目中实现 ShazamKit。但我有一些问题。 我使用 AVCaptureSession 在我的应用中拍照,但无法使用 ShazamKit。
我尝试使用三种不同的方式 在我的 AVCaptureSession 期间使用 AVAudioEngine 但我没有从 Shazam 得到任何结果。 停止我的 AvCaptureSession 后尝试使用 ShazamKit 但这会导致一些问题和一些崩溃。 尝试使用我的 AVCaptureSession 的缓冲区直接捕获音频,而不使用 AVAudioEngine。
试试吧! audioSession.setActive(true,options: .notifyOthersOnDeactivation)
let inputNode = self.audioEngine.inputNode
let recordingFormat = inputNode.outputFormat(forBus: 0)
let audioFormat = recordingFormat //AVAudioFormat(standardFormatWithSampleRate: self.audioEngine.inputNode.outputFormat(forBus: 0).sampleRate,// channels: 1)
inputNode.installTap(onBus: 0,bufferSize: 1024,format: audioFormat) { (buffer: AVAudioPCMBuffer,when: AVAudioTime) in
try! self.signatureGenerator.append(buffer,at: nil)
self.session.matchStreamingBuffer(buffer,at: nil)
}
self.audioEngine.prepare()
try! self.audioEngine.start()
我可以选择两种方式来做到这一点,使用 AVCaptureSession 输出将其传递给 ShazamKit 或在 AVCaptureSession 停止后使用 AVAudioSession。
所以我有两个问题:
我可以在 SHSession 中使用来自 AVCaptureSession 缓冲区的 CMSampleBufferRef 吗? 如果答案是肯定的怎么办?
如果我想在停止 AVCaptureSession 后使用 AVAudioSession,如何防止此错误?
[aurioc] AURemoteIO.cpp:1117 Failed: -10851 (enable 1,outf inf) [avae] AVAEInternal.h:76
所需条件为假:[AVAEGraphNode.mm:834:CreateRecordingTap:
(IsFormatSampleRateAndChannelCountValid(format))]
*** 由于未捕获的异常“com.apple.coreaudio.avfaudio”而终止应用程序,原因:“所需条件为假:
IsFormatSampleRateAndChannelCountValid(format)'
谢谢
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)