录制时ios音频单元remoteIO播放

录制时ios音频单元remoteIO播放,第1张

概述我被指控将VOIP添加到游戏中(跨平台,因此不能使用Apple游戏套件来执行此 *** 作). 现在3或4天,我正试图绕着音频单元和remoteIO … 我忽略了几十个例子,但每次它只是将一个简单的算法应用于输入PCM并在扬声器上播放. 根据Apple的文档,为了做VOIP,我们应该使用kAudioSessionCategory_PlayAndRecord. UInt32 audioCategory = 我被指控将VOIP添加到游戏中(跨平台,因此不能使用Apple游戏套件来执行此 *** 作).

现在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将始终播放来自麦克风的内容(或者更令人兴奋的是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的意图(仍然依据文档).

当然,我找不到任何关于它的文档,音频单元仍然没有记录……

任何人都会知道最好的方法是什么?

解决方法 我没有使用过VOIP或kAudioSessioncategory_PlayAndRecord.但是如果你想录制/传输从麦克风中拾取的语音并播放来自网络包的输入数据: Here是一个很好的样本,包括麦克风和播放.此外,如果您还没有从Apple阅读此文档,我强烈建议您使用 this.

简而言之:您需要创建一个AudioUnits实例.在其中,配置两个回调:一个用于麦克风,一个用于回放.回调麦克风功能将为您提供从麦克风中拾取的数据.然后,您可以使用任何选择的网络协议转换并传输到其他设备.播放回调功能是您从其他网络设备提供传入数据以进行播放的地方.

总结

以上是内存溢出为你收集整理的录制时ios音频单元remoteIO播放全部内容,希望文章能够帮你解决录制时ios音频单元remoteIO播放所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1075690.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-26
下一篇2022-05-26

发表评论

登录后才能评论

评论列表(0条)

    保存