1

目前我出于不同的原因在多个应用程序中使用Novocaine 。感谢 Alex 提供的出色框架!也感谢 Nick D. 的制作!

我可以通过这样的示例使用基本播放来获取示例:

[self.audioManager setInputBlock:^(float *data, UInt32 numFrames, UInt32 numChannels) {
     NSMutableData *theData = [NSMutableData dataWithBytes:data
                                                    length:(numFrames* numChannels*sizeof(float))];
}];

然后我使用GCDAsyncSocket通过套接字流发送数据

收到数据后,我将其放入环形缓冲区

float *floatData = (float*)[theData bytes];
_ringBufferOut->AddNewInterleavedFloatData(floatData, numFrames, numChannels);

像这样玩:

[audioManager setOutputBlock:^(float *outData, UInt32 numFrames, UInt32 numChannels) {
     _ringBufferOut->FetchInterleavedData(outData, numFrames, numChannels);
 }];

我最好的尝试是只接收几秒钟的声音(取决于我的缓冲区的大小),而不仅仅是故障或没有声音......

我在使用缓冲区方面完全是新手,我已经花了几天时间尝试配置如何实现这一点。

我的问题是:是否可以仅使用 Novocaine 及其 ringBuffer 在 iPhone 设备之间传输音频?我应该像Speak Here示例那样去 AudioQueue吗?也许将它们结合起来?我知道我的问题是使用缓冲区,因此非常感谢任何有关缓冲的帮助。

4

0 回答 0