Я пытаюсь записать звук PCM с микрофона iPhone, но когда я запускаю свою аудио-очередь, она останавливается после вызова функции обратного вызова столько раз, сколько имеется буфер.В моем случае 3 раза.Это мой код:
class AudioModel {
private var inQueue: AudioQueueRef!
init() {
// Describe PCM format. 8kHz, 16bits, mono
var inFormat = AudioStreamBasicDescription(mSampleRate: 8000.0, // 8kb
mFormatID: kAudioFormatLinearPCM,
mFormatFlags: kLinearPCMFormatFlagIsSignedInteger | kLinearPCMFormatFlagIsPacked,
mBytesPerPacket: 2,
mFramesPerPacket: 1,
mBytesPerFrame: 2,
mChannelsPerFrame: 1,
mBitsPerChannel: 16,
mReserved: 0)
AudioQueueNewInput(&inFormat, audioQueueInputCallback, nil, nil, nil, 0, &inQueue)
for _ in 0...2 {
var bufferRef: AudioQueueBufferRef!
AudioQueueAllocateBuffer(inQueue, 320, &bufferRef)
AudioQueueEnqueueBuffer(inQueue, bufferRef, 0, nil)
}
}
func startRecord() {
AudioQueueStart(inQueue, nil)
}
func pauseRecord() {
AudioQueuePause(inQueue)
}
private let audioQueueInputCallback: AudioQueueInputCallback = { (inUserData, inAQ, inBuffer, inStartTime, inNumberPacketDescriptions, inPacketDescs) in
print("AudioQueueInputCallback called")
print("mAudioDataByteSize: \(inBuffer.pointee.mAudioDataByteSize)")
var err = AudioQueueEnqueueBuffer(inAQ, inBuffer, 0, nil)
if err != noErr {
print("AudioQueueEnqueueBuffer err: \(err)")
return
}
}
}
Когда я звоню startRecord
У меня есть это сообщение и ничего больше
AudioQueueInputCallback called
mAudioDataByteSize: 0
AudioQueueInputCallback called
mAudioDataByteSize: 0
AudioQueueInputCallback called
mAudioDataByteSize: 0
Через 2 недели для разработки с API Audio Queue Services некоторыекомпортимент все еще меня смущает.