我已经被指控将VOIP添加到游戏中(跨平台,因此不能使用Apple游戏包来完成)。ios音频单元在录制时的remoteIO回放
现在3或4天,我试图让我的头绕着音频单元和remoteIO ... 我忽略了几十个例子,但每次它只应用一个简单的算法输入PCM并在扬声器上播放。 根据Apple的文档为了做VOIP我们应该使用kAudioSessionCategory_PlayAndRecord。
UInt32 audioCategory = kAudioSessionCategory_PlayAndRecord;
status = AudioSessionSetProperty(kAudioSessionProperty_AudioCategory,
sizeof(audioCategory),
&audioCategory);
XThrowIfError(status, "couldn't set audio category");
1),但它似乎(对我)说playAndRecord总是会播放从麦克风什么未来(或者更excatly的PerformThru回调// aurioTouch),是我错了吗?
我有最简单的回调,做什么,但AURender
static OSStatus PerformThru(
void *inRefCon,
AudioUnitRenderActionFlags *ioActionFlags,
const AudioTimeStamp *inTimeStamp,
UInt32 inBusNumber,
UInt32 inNumberFrames,
AudioBufferList *ioData)
{
OSStatus err = AudioUnitRender(THIS->rioUnit, ioActionFlags, inTimeStamp, 1, inNumberFrames, ioData);
if (err)
printf("PerformThru: error %d\n", (int)err);
return err
}
从该回调,我打算将数据发送到对等(不可直接的过程,但数据将来源于它)...
我没有看到我可以播放与输入不同的输出,除了可能有2个单元,一个录音,一个播放,但它似乎并不是Apple想要的(仍然归于文档)。
当然,我无法找到任何关于它的文档,音频单元仍然是相当多的未记录...
任何人会对什么是做到这一点的最佳方式的点子?
我在搜索过程中没有创建过这个示例,它帮了我很多,谢谢! – TheSquad
谢谢你的帖子。我一直在寻找这个很长一段时间。现在你解决了我的问题。感谢很多,并祝你快乐开心新的一年。 –
如何保存该录音机的音频缓冲区,请分享吗? –