AVCaptureSession 期间的 ShazamKit - 使用相机时识别音频

问题描述

我想在我的项目中实现 ShazamKit。但我有一些问题。 我使用 AVCaptureSession 在我的应用中拍照,但无法使用 ShazamKit。

我尝试使用三种不同的方式 在我的 AVCaptureSession 期间使用 AVAudioEngine 但我没有从 Shazam 得到任何结果。 停止我的 AvCaptureSession 后尝试使用 ShazamKit 但这会导致一些问题和一些崩溃。 尝试使用我的 AVCaptureSession 的缓冲区直接捕获音频,而不使用 AVAudioEngine。

这是我与 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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...