5

ある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);
}
4

1 に答える 1

2

オーディオ コールバックから別のキューまたは FIFO にオーディオ データ (この例ではオーディオ サンプル ポインターとバイト カウントを示しています) を保存し、別のネットワーク スレッドでオーディオ バイトから NSData を作成して送信することを検討してください。

于 2011-12-09T23:22:15.033 に答える