注意事项:
以下代码成功启动音频和视频AVCaptureSession,AVCaptureSession代理func captureOutput(captureOutput: AVCaptureOutput, didOutputSampleBuffer sampleBuffer: CMSampleBufferRef, fromConnection connection: AVCaptureConnection)
正在为音频和视频调用。当一个。提供音频CMSampleBufferRef示例我试图将该示例转换为AudioBuffer并传递给Aubio方法aubio_onset_do。我正在使用单例aubio_onset COpaquePointer。
在这段代码中,我尝试用两种不同的方式用音频缓冲区数据调用aubio_onset_do。
func captureOutput(captureOutput: AVCaptureOutput, didOutputSampleBuffer sampleBuffer: CMSampleBufferRef, fromConnection connection: AVCaptureConnection)
。这意味着在我的let useTimerAndNSMutableData = false
函数中,我将audioBuffer.mData传递给prepareAudioBuffer
。 此方法永远不会失败,但也没有检测到任何启动,我怀疑因为样本量不够大。 方法2 如果sampleAudioForOnsets
我最近每隔1秒调用let useTimerAndNSMutableData = true
,则允许有时间使用AudioBuffer.mDatas构建NSMutableData。使用这种方法,我试图给aubio_onset_do一个足够大的样本来检测onsets,使用一个计时器和NSMutableData这个方法导致aubio_onset_do很快崩溃:
(EXC_BAD_ACCESS(code = 1))
sampleAudioForOnsets