虽然有很多关于如何使用AVCaptureSession来获取相机数据的教程,但我找不到关于如何正确处理麦克风数据的信息(甚至在苹果的开发网络本身上).
我已经实现了AVCaptureAudioDataOutputSampleBufferDelegate,我正在调用我的委托,但我不知道我获取的CMSampleBufferRef的内容是如何格式化的.缓冲区的内容是否为离散样本?它的特性是什么?这些属性可以在哪里设置?
可以使用[AVCaptureVideoDataOutput setVideoSettings:]设置视频属性,但没有相应的AVCaptureAudioDataOutput调用(没有setAudioSettings或类似的东西).
我对 AudioQueueEnqueueBuffer 的调用失败,OSStatus -66686。我以前从未见过此错误代码,并且在任何地方都找不到有关它的信息。将其转换为 NSError 并打印其描述会得到以下控制台输出:
\n\n错误:错误域=NSOSStatusErrorDomain代码=-66686“操作无法完成\xe2\x80\x99。(OSStatus错误-66686。)”
\n\n这是我所有相关的 AudioQueue 初始化代码:
\n\nAudioQueueRef audioQueue;\nAudioQueueBufferRef aq_buffer[3];\nAudioStreamBasicDescription streamFormat;\nstreamFormat.mSampleRate = 44100;\nstreamFormat.mFormatID = kAudioFormatLinearPCM;\nstreamFormat.mFormatFlags = kLinearPCMFormatFlagIsSignedInteger | kLinearPCMFormatFlagIsPacked;\nstreamFormat.mBitsPerChannel = 16;\nstreamFormat.mChannelsPerFrame = 1;\nstreamFormat.mBytesPerPacket = 2 * streamFormat.mChannelsPerFrame;\nstreamFormat.mBytesPerFrame = 2 * streamFormat.mChannelsPerFrame;\nstreamFormat.mFramesPerPacket = 1;\nstreamFormat.mReserved = 0;\n\nOSStatus err;\nerr = AudioQueueNewOutput(&streamFormat, AudioPlayCallback, self, \n CFRunLoopGetCurrent(), kCFRunLoopCommonModes, 0, &audioQueue);\n\n// Start playback\nerr = AudioQueueStart(audioQueue, NULL);\n\n// Enqueue buffers\nfor (int i = 0; i < 3; i++) {\n err = AudioQueueAllocateBuffer (audioQueue, 1024, &aq_buffer[i]); \n err = AudioQueueEnqueueBuffer (audioQueue, aq_buffer[i], 0, …Run Code Online (Sandbox Code Playgroud)