首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将回调附加到远程IO的输出元素

将回调附加到远程IO的输出元素
EN

Stack Overflow用户
提问于 2012-11-28 23:39:20
回答 1查看 989关注 0票数 2

我想从iOS设备的麦克风捕获音频并将其写入.caf文件。

我能够将远程IO音频单元连接到多声道混音器单元( MCMU ),并将回调附加到MCMU的输入。在该回调中,我可以使用ExtAudioFileAsyncWrite()成功地将音频数据从麦克风写入文件。

我想简化事情,并从图片中删除MCMU。我的想法是,我可以简单地将一个回调附加到远程IO的输入作用域的输出总线上,并在该回调调用中调用ExtAudioFileAsyncWrite()。

但是,当我尝试执行此操作时,ExtAudioFileAsyncWrite()返回-50 (paramError)。

不能将回调附加到远程IO的输入元素的输出总线上吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-29 05:59:57

这是可能的。您将需要使用AudioUnitSetProperty来设置kAudioOutputUnitProperty_SetInputCallback属性。该回调的功能与渲染回调非常相似,但只要RemoteIO / mic有新的数据(而不是从程序中请求数据),它就会被调用。

示例:

代码语言:javascript
复制
AURenderCallbackStruct callbackInfo = {YourInputCallback, NULL};
AudioUnitSetProperty(remoteIO,
                     kAudioOutputUnitProperty_SetInputCallback,
                     kAudioUnitScope_Global,
                     0,
                     &callbackInfo,
                     sizeof(callbackInfo));

这将使RemoteIO /麦克风在有新的一批样本时调用YourInputCallback。您可以像以前一样使用此回调来调用ExtAudioFileWriteAsync。请注意,您还必须在RemoteIO上调用AudioUnitRender,才能从中获取新的示例。

关于-50错误,这不是一个非常有用的错误诊断。它基本上只是说“你的一个参数有错误”。很可能您的ExtAudioFile为空或没有正确设置(在这种情况下,您之前使用的某个ExtAudioFile*函数将返回一个更有用的错误代码,您可以用它来诊断它)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13608789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档