必要:オーディオキューと2つのAudioQueueBuffer
があります。 NO.1 AudioQueueBuffer
の再生中にすぐにどのようにして NO.2 AudioQueueBuffer
を再生できますか? AudioQueueStop
またはAudioQueueReset
を試しました。処理に時間がかかる、NO.2 AudioQueueBuffer
再生が遅すぎる。Audio Queueは現在の再生タスクを停止し、すぐに別のAudioQueueBufferを再生する方法を教えてください。
-(void)playBuffer:(AudioBuffer *)buffer format:(const AudioStreamBasicDescription *)format
{
AudioQueueStop(_audioQueue, YES);//this line consuming too much time
AudioQueueDispose(_audioQueue, YES);
AudioQueueRef newAudioQueue;
AudioQueueBufferRef queueBuffer;
AudioQueueNewOutput(format, audioQueueOutputCallback, (__bridge void*)self,
nil, nil, 0, &newAudioQueue);
OSStatus status;
status = AudioQueueAllocateBuffer(newAudioQueue, buffer->mDataByteSize, &queueBuffer);
memcpy(queueBuffer->mAudioData, buffer->mData, buffer->mDataByteSize);
queueBuffer->mAudioDataByteSize=buffer->mDataByteSize;
status = AudioQueueEnqueueBuffer(newAudioQueue, queueBuffer, 0, NULL);
Float32 gain=1.0;
AudioQueueSetParameter(newAudioQueue, kAudioQueueParam_Volume, gain);
AudioQueueStart(newAudioQueue, nil);
AudioQueueFreeBuffer(newAudioQueue, queueBuffer);
_audioQueue = newAudioQueue;
}
ので、私の質問は:それは次のオーディオバッファがすぐにaudio queue
プレイ可能かaudio queue
このタスクを一致していないと私は代替が必要ですか??
「AVAudioUnit」が良い選択肢かもしれません。 – ooOlly