我想将语音从一部 iPhone 传输到另一部。我已经使用 TCP 在两部 iPhone 之间建立了连接,并且我已经设法在 iPhone 上录制语音并使用音频队列服务播放它。我还设法在两部 iPhone 之间发送数据。我通过发送 NSData 包来做到这一点。
我的下一步是在录制音频数据时将其发送到另一部 iPhone。我相信我应该在AudioInputCallback
. 我AudioQueueBufferRef
的被调用inBuffer
,似乎我想将其转换inBuffer->mAudioData
为 NSData,然后将 NSData 发送到另一台设备,然后解压缩它。
有谁知道这是否是这样做的方法以及如何将我的转换inBuffer->mAudioData
为 NSData?也欢迎其他方法。
这是我的回调方法,我认为我应该“抓取”数据并将其发送到另一部 iPhone:
void AudioInputCallback(void *inUserData, AudioQueueRef inAQ, AudioQueueBufferRef inBuffer, const AudioTimeStamp *inStartTime, UInt32 inNumberPacketDescriptions, const AudioStreamPacketDescription *inPacketDescs)
{
RecordState *recordState = (RecordState *)inUserData;
if(!recordState->recording)
return;
OSStatus status = AudioFileWritePackets(recordState->audioFile,
false,
inBuffer->mAudioDataByteSize,
inPacketDescs,
recordState->currentPacket,
&inNumberPacketDescriptions,
inBuffer->mAudioData);
if(status == 0)
{
recordState->currentPacket += inNumberPacketDescriptions;
}
AudioQueueEnqueueBuffer(recordState->queue, inBuffer, 0, NULL);
}