首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RemoteIO:影响app产生的音频

RemoteIO:影响app产生的音频
EN

Stack Overflow用户
提问于 2012-10-23 01:47:05
回答 1查看 563关注 0票数 0

简而言之:有没有一种方法可以捕获/处理使用RemoteIO的应用程序产生的所有音频?

我可以获得render回调,它允许我通过连接到RemoteIO的输入范围的输出总线来向扬声器发送音频。但我在该回调中的输入缓冲区不包含应用程序中AVPlayer在其他地方发出的声音。操控所有应用程序的音频是可能的吗?

下面是我的设置:

代码语言:javascript
复制
-(void)setup
{
    OSStatus status = noErr;

    AudioComponentDescription remoteIODesc;
    fillRemoteIODesc(&remoteIODesc);
    AudioComponent inputComponent = AudioComponentFindNext(NULL, &remoteIODesc);

    AudioComponentInstance remoteIO;
    status = AudioComponentInstanceNew(inputComponent, &remoteIO);
    assert(status == noErr);

    AudioStreamBasicDescription desc = {0};
    fillShortMonoASBD(&desc);

    status = AudioUnitSetProperty(remoteIO,
                                  kAudioUnitProperty_StreamFormat,
                                  kAudioUnitScope_Input,
                                  0,
                                  &desc,
                                  sizeof(desc));
    assert(status == noErr);

    AURenderCallbackStruct callback;
    callback.inputProc = outputCallback;
    callback.inputProcRefCon = _state;

    status = AudioUnitSetProperty(remoteIO,
                                  kAudioUnitProperty_SetRenderCallback,
                                  kAudioUnitScope_Input,
                                  0,
                                  &callback,
                                  sizeof(callback));
    assert(status == noErr);

    status = AudioUnitInitialize(remoteIO);
    assert(status == noErr);

    status = AudioOutputUnitStart(remoteIO);
    assert(status == noErr);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-30 01:44:49

简短的回答:不,不幸的是,它不是这样工作的。您将不能对通过AVFoundation (从iOS 6开始)生成的音频添加任意处理。

你误解了RemoteIO单位的用途。RemoteIO为您提供了两项功能:音频输入硬件和音频输出硬件。在中,您可以使用RemoteIO从麦克风获取音频,或将音频发送到扬声器。RemoteIO单元不允许你抓取你的应用程序的其他部分(例如AVFoundation)发送到硬件的音频。不太深入,这是因为AVFoundation不使用与RemoteIO相同的音频路径。

要在你想要的级别上操作音频,你必须比AVFoundation更深入。Audio Queue Services是下一层,它将使您能够以音频队列处理Tap的形式访问音频。这可能是开始处理音频的最简单方法。不过,目前还没有太多关于它的文档。也许目前最好的来源是头AudioToolbox.framework/AudioQueue.h注意,这只是在iOS 6中引入的。

比这更深的是Audio Units。这就是RemoteIO单元所在的位置。您可以使用AUFilePlayer从音频文件中产生声音,然后将该音频馈送到其他音频单元进行处理(或者自己处理)。这将比AVFoundation (轻描淡写)更棘手/冗长,但如果您已经设置了一个RemoteIO单元,那么您可能可以处理它。

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

https://stackoverflow.com/questions/13016853

复制
相关文章

相似问题

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