あるiPhoneから別のiPhoneに音声を送信したい。TCP を使用して 2 台の iPhone 間の接続を確立し、iPhone で音声を録音して Audio Queue Services を使用して再生することができました。また、2 台の iPhone 間でデータを送信することもできました。これを行うには、NSData パッケージを送信します。
次のステップは、録音中の音声データを他の iPhone に送信することです。でこれを行うべきだと思いますAudioInputCallback
。MyAudioQueueBufferRef
が呼び出され、 を NSDatainBuffer
に変換してinBuffer->mAudioData
から、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);
}