我已經被指控將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
謝謝你的帖子。我一直在尋找這個很長一段時間。現在你解決了我的問題。感謝很多,並祝你快樂開心新的一年。 –
如何保存該錄音機的音頻緩衝區,請分享嗎? –