Ios 是否可以在一个AUGraph中播放两个或多个FilePlayer音频单元?
针对iOS,我想同时播放两个.caf音频文件 我创建了一个简单的曲线图,它由两个“生成器”音频单元(子类型kAudioUnitSubType_AudioFilePlayer)组成,连接到一个连接到远程IO(输出范围)的多通道混音器AU 我只需将一个filePlayer AU连接到混音器,即可成功播放其中一个文件。要播放这两个文件,我只需创建filePlayer的另一个实例,并以与第一个filePlayer相同的方式对其进行配置 我正在打开音频文件,然后使用Ios 是否可以在一个AUGraph中播放两个或多个FilePlayer音频单元?,ios,core-audio,Ios,Core Audio,针对iOS,我想同时播放两个.caf音频文件 我创建了一个简单的曲线图,它由两个“生成器”音频单元(子类型kAudioUnitSubType_AudioFilePlayer)组成,连接到一个连接到远程IO(输出范围)的多通道混音器AU 我只需将一个filePlayer AU连接到混音器,即可成功播放其中一个文件。要播放这两个文件,我只需创建filePlayer的另一个实例,并以与第一个filePlayer相同的方式对其进行配置 我正在打开音频文件,然后使用kAudioUnitProperty\u
kAudioUnitProperty\u scheduledfleids
属性和kAudioUnitProperty\u scheduledfleregion
属性将它们传递到发电机组
我一直在检查所有AU调用的错误,没有任何错误返回。当我开始绘制图表时,除了沉默,我什么也得不到
按下“播放”键后,下面是我的图形快照:
使用多个filePlayer音频单元是否存在我所缺少的细微差别?我试图用这种方式做的事情可能吗?或者我需要创建音频缓冲区并手动将其提供给filePlayer单元吗?您所拥有的应该可以工作,但可能出现了一些问题:
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)