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