1

NSSocket を介して、iPhone のマイクからリアルタイムで録音をストリーミングしようとしています。

録音と再生のためのコールバックがあります。次のコードを使用して、バッファから直接読み取ろうとしています:

SInt16 *intFromBuffer;
intFromBuffer = audioBufferList->mBuffers[0].mData;

私がしようとしているとき:

NSLog(@"0x%X", intFromBuffer);

たとえば、次のようになります: 0xA182E00

そして今、重要な部分 - 再生コールバック:

static OSStatus playbackCallback(void *inRefCon,
                             AudioUnitRenderActionFlags *ioActionFlags,
                             const AudioTimeStamp *inTimeStamp,
                             UInt32 inBusNumber,
                             UInt32 inNumberFrames,
                             AudioBufferList *ioData) {

/**
 This is the reference to the object who owns the callback.
 */
AudioProcessor *audioProcessor = (__bridge AudioProcessor*) inRefCon;

// iterate over incoming stream an copy to output stream
for (int i=0; i < ioData->mNumberBuffers; i++) {
    AudioBuffer buffer = ioData->mBuffers[i];

    // find minimum size
    UInt32 size = min(buffer.mDataByteSize, [audioProcessor audioBuffer].mDataByteSize);  

    intFromBuffer = (SInt16)([NSString stringWithFormat:@"0x%@", data.output]);

    memcpy(buffer.mData, intFromBuffer, size); //this works fine!
}
return noErr;
}

しかし今、この intFromBuffer を NSStream で動作させるにはどうすればよいですか?

NSString として直接送信し、NSString として送り返し、解析して SInt16 に戻そうとすると、ノイズだけが返されます。

何か案は?アイデアが尽きた…

4

1 に答える 1