我正在尝试通过 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 时,我得到的只是噪音。
有任何想法吗?我的想法不多了...