あるiPhoneから別のiPhoneに音声を送信したい。私はTCPを使って2つのiPhone間の接続を確立しました。私はiPhoneで音声を録音し、Audio Queue Servicesを使って再生しました。私は2つの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);
}
ありがとうございます。私はなぜ別のキューを使うべきかわかりません。あなたはそれを詳述できますか?また、データをNSDataに変換するためのサンプルコードを用意することはありませんか? – simonbs
http://stackoverflow.com/a/8486682/486845でhotpaw2からの回答を見る – simonbs