我使用 AudioQue 在 iPhone 中编写了一个语音流应用程序。在录音开始时,我启动了网络连接并将 NSAudioOutStream 的实例传递给
AudioInputCallback
使用inUserData
参考。
void AudioInputCallback(
void *inUserData,
AudioQueueRef inAQ,
AudioQueueBufferRef inBuffer,
const AudioTimeStamp *inStartTime,
UInt32 inNumberPacketDescriptions,
const AudioStreamPacketDescription *inPacketDescs) {
RecordState* recordState = (RecordState*)inUserData;
if(!recordState->recording) {
NSLog(@"Record ending...");
}
else{
[recordState->soStream write:inBuffer->mAudioData maxLength:inBuffer->mAudioDataByteSize];
NSLog([NSString stringWithFormat:@"Count:%d Size:%d¥n", sentCnt++, inBuffer->mAudioDataByteSize]);
}
recordState->currentPacket += inNumberPacketDescriptions;
AudioQueueEnqueueBuffer(recordState->queue, inBuffer, 0, NULL);
}
根据 AudioQueue 的 init 参数,长度inBuffer
为 16000 字节。但是,毫无疑问,在 WIFI 应用程序中可以正常工作。但在 3G 网络中,客户端-服务器交换并不稳定。任何人都有相同的经验,或者有人可以提出解决此问题的提示。