Ios 我应该如何通过QuickBlox发送音频缓冲区

Ios 我应该如何通过QuickBlox发送音频缓冲区,ios,cocoa-touch,audio,core-audio,Ios,Cocoa Touch,Audio,Core Audio,我在我的应用程序中实现了QuickBlox,并通过麦克风进行了音频聊天,但我想从mp3的音频单元渲染回调发送一个音频缓冲区。我认为这与格式有关,因此我将音频播放器的格式设置为: AudioStreamBasicDescription inputASBL = {0}; inputASBL.mSampleRate = static_cast<Float64>(8000); inputASBL.mFormatID = kAudioFormatLin

我在我的应用程序中实现了QuickBlox,并通过麦克风进行了音频聊天,但我想从mp3的音频单元渲染回调发送一个音频缓冲区。我认为这与格式有关,因此我将音频播放器的格式设置为:

AudioStreamBasicDescription inputASBL = {0};

inputASBL.mSampleRate =          static_cast<Float64>(8000);
inputASBL.mFormatID =            kAudioFormatLinearPCM;
inputASBL.mFormatFlags =         kAudioFormatFlagIsPacked | kAudioFormatFlagIsSignedInteger,
inputASBL.mFramesPerPacket =     1;
inputASBL.mChannelsPerFrame =    2;
inputASBL.mBitsPerChannel =      sizeof(short) * 8;
inputASBL.mBytesPerPacket =      sizeof(short) * 2;
inputASBL.mBytesPerFrame =       sizeof(short) * 2;
inputASBL.mReserved =            0;
[ioNode setStreamFormat:&inputASBL scope:kAudioUnitScope_Input bus:0];
接收设备没有收到任何信息,但我知道它的设置正确,因为当我关掉麦克风时,它播放得很好

OSStatus MyAURenderCallback(void *inRefCon,
                        AudioUnitRenderActionFlags *actionFlags,
                        const AudioTimeStamp *inTimeStamp,
                        UInt32 inBusNumber,
                        UInt32 inNumberFrames,
                        AudioBufferList *ioData) {

    AudioUnit mixerUnit = mixerNode.audioUnit;
    AudioUnitRender(mixerUnit,actionFlags,inTimeStamp,inBusNumber,inNumberFrames,ioData);

if(isStreaming){
    AudioBufferList ab = *ioData;
    [[AppDelegate del].videoChat processVideoChatCaptureAudioBuffer:ab.mBuffers[0]];
}
    //renderCoundt++;

return noErr;
}