Аудио-очередь: AudioQueueStart возвращает -50
Я пытаюсь написать модуль измерителя мощности микрофона в приложении GLES (Unity3d). Он прекрасно работает в приложении UIKit. Но когда я интегрируюсь в свой проект unity3d, AudioQueue не может запустить свойство. Код результата вызова AudioQueueStart всегда равен -50, но что означает -50? Я не могу найти ссылку в iOS Developer Library.
Я искал об этой проблеме и знаю, что у кого-то есть такая же проблема в приложении cocos2d. Может быть, это имеет какое-то отношение.
Вот мой код для Start Audio Queue:
UInt32 ioDataSize = sizeof(sampleRate);
AudioSessionGetProperty(kAudioSessionProperty_CurrentHardwareSampleRate, &ioDataSize, &sampleRate); //returns noErr
format.mSampleRate = sampleRate;
format.mFormatID = kAudioFormatLinearPCM;
format.mFormatFlags = kAudioFormatFlagIsSignedInteger | kAudioFormatFlagIsPacked;
format.mFramesPerPacket = format.mChannelsPerFrame = 1;
format.mBitsPerChannel = 16;
format.mBytesPerPacket = format.mBytesPerFrame = 2;
AudioQueueNewInput(&format, listeningCallback, self, NULL, NULL, 0, &queue); //returns noErr
AudioQueueBufferRef buffers[3];
for (NSInteger i = 0; i < 3; ++i) {
AudioQueueAllocateBuffer(queue, 735, &buffers[i]); //returns noErr
AudioQueueEnqueueBuffer(queue, buffers[i], 0, NULL); //returns noErr
}
levels = (AudioQueueLevelMeterState *)calloc(sizeof(AudioQueueLevelMeterState), format.mChannelsPerFrame);
UInt32 trueValue = true;
AudioQueueSetProperty(queue, kAudioQueueProperty_EnableLevelMetering, &trueValue, sizeof(UInt32)); //returns noErr
AudioQueueStart(queue, NULL); //returns -50
2 ответа
У меня ниже работает:
Добавь это:
AVAudioSession * session = [AVAudioSession sharedInstance];
if (!session) printf("ERROR INITIALIZING AUDIO SESSION! \n");
else{
[session setCategory:AVAudioSessionCategoryPlayAndRecord error:&nsError];
if (nsError) printf("couldn't set audio category!");
[session setActive:YES error:&nsError];
if (nsError) printf("AudioSession setActive = YES failed");
}
до AudioQueueStart(myQueue, NULL);
Вы проверили, что AudioSession находится в режиме AVAudioSessionCategoryRecord или AVAudioSessionCategoryPlayAndRecord?