Ios 是否可以在一个AUGraph中播放两个或多个FilePlayer音频单元?

Ios 是否可以在一个AUGraph中播放两个或多个FilePlayer音频单元?,ios,core-audio,Ios,Core Audio,针对iOS,我想同时播放两个.caf音频文件 我创建了一个简单的曲线图,它由两个“生成器”音频单元(子类型kAudioUnitSubType_AudioFilePlayer)组成,连接到一个连接到远程IO(输出范围)的多通道混音器AU 我只需将一个filePlayer AU连接到混音器,即可成功播放其中一个文件。要播放这两个文件,我只需创建filePlayer的另一个实例,并以与第一个filePlayer相同的方式对其进行配置 我正在打开音频文件,然后使用kAudioUnitProperty\u

针对iOS,我想同时播放两个.caf音频文件

我创建了一个简单的曲线图,它由两个“生成器”音频单元(子类型kAudioUnitSubType_AudioFilePlayer)组成,连接到一个连接到远程IO(输出范围)的多通道混音器AU

我只需将一个filePlayer AU连接到混音器,即可成功播放其中一个文件。要播放这两个文件,我只需创建filePlayer的另一个实例,并以与第一个filePlayer相同的方式对其进行配置

我正在打开音频文件,然后使用
kAudioUnitProperty\u scheduledfleids
属性和
kAudioUnitProperty\u scheduledfleregion
属性将它们传递到发电机组

我一直在检查所有AU调用的错误,没有任何错误返回。当我开始绘制图表时,除了沉默,我什么也得不到

按下“播放”键后,下面是我的图形快照:


使用多个filePlayer音频单元是否存在我所缺少的细微差别?我试图用这种方式做的事情可能吗?或者我需要创建音频缓冲区并手动将其提供给filePlayer单元吗?

您所拥有的应该可以工作,但可能出现了一些问题:

  • 您是否将每条总线上的音量参数以及输出设置为>0?(
    kMultiChannelMixerParam\u Volume
    在输入和输出作用域上)。这就是我认为的问题所在,因为我认为混频器的所有卷都在0开始

  • 您是否通过在输入范围上设置
    kAudioUnitProperty\u ElementCount
    属性将输入总线计数设置为2或更多?(注意:由于您使用的是元素1和2,因此需要将元素计数设置为3,或者使用元素0和1)


  • 我不确定你是否解决过这个问题

    看起来,在将混音器连接到remoteIO之前,您正在将文件播放器连接到混音器


    始终将图形向上“向后”连接,即从remoteIO开始,然后通过链向后连接到生成器。我认为连接前锋不起作用,因为AUGraphs中使用了pull结构

    谢谢你的建议。我在输入范围中将
    kAudioUnitProperty\u ElementCount
    设置为6,所以这不是问题所在。我没有想到检查输入作用域的音量参数,但它们显示为1.0。继续调试。仍在尝试解决此问题,只是注意到CAShow()输出中前两个连接的内存地址相同:
    0x00000029
    。应该是这样吗?我已经创建了单独的节点和音频单元,所以我不确定这两个地址为什么相等…?实际上,我相信
    0x00000029
    只是连接格式标志的十六进制表示。在这种情况下,格式为
    kaudioformatflagismfloat
    +
    kaudioformatflagismacked
    +
    kaudioformatflagismnoninterleaved
    AudioUnitGraph 0xF7DA000:
      Member Nodes:
        node 1: 'auou' 'rioc' 'appl', instance 0xf18e3e0 O I
        node 2: 'aumx' 'mcmx' 'appl', instance 0x9d72f50 O I
        node 3: 'augn' 'afpl' 'appl', instance 0x9db6ee0 O I
        node 4: 'augn' 'afpl' 'appl', instance 0x9db6fd0 O I
      Connections:
        node   3 bus   0 => node   2 bus   1  [ 1 ch,  44100 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved]
        node   4 bus   0 => node   2 bus   2  [ 1 ch,  44100 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved]
        node   2 bus   0 => node   1 bus   0  [ 2 ch,  44100 Hz, 'lpcm' (0x00000C2C) 8.24-bit little-endian signed integer, deinterleaved]
      CurrentState:
        mLastUpdateError=0, eventsToProcess=F, isRunning=T (3)