如何在 AUGraph 中渲染特定的音频单元
How to render a specific audio unit in a AUGraph
我设置了一个包含多个音频单元的 AUGraph。
我知道当我调用 AUGraphStart()
时,图形开始渲染所有音频单元。但我希望能够开始渲染一个特定的 AUFilePlayer。
可能吗?
更新
我在评论中看到我的问题缺乏细节。
我有我的 AUGraph 的当前设置:
AUFilePlayer -> AUMixer -> AUOutput
我使用特定的 AudioFileID 设置了 AUFilePlayer。
当我启动图表时,我只想 "start" 图表而没有任何声音。
稍后我想做类似的事情:AUFilePlayer.Play() 开始发出声音。
不知道有没有可能...
更新:找到解决方法
我想我找到了解决方法。有关详细信息,请参阅我的答案。
我找到了以下解决方法:
当我设置我的 AUFilePlayer 时,我将 ScheduledAudioFileRegion
结构的值 mFramesToPlay
设置为:
ScheduledAudioFileRegion audio_file_region;
/*... init values...*/
audio_file_region_.mFramesToPlay = 0;
而不是
audio_file_region_.mFramesToPlay = number_of_frames_for_the_audio_file;
这样当我启动图形时,AUFilePlayer 不会播放任何声音。
然后我有一个方法 Play()
,我在其中设置正确的帧以播放 mFramesToPlay
字段。
我不知道这样做是否是个好方法,但它确实起作用了。
我设置了一个包含多个音频单元的 AUGraph。
我知道当我调用 AUGraphStart()
时,图形开始渲染所有音频单元。但我希望能够开始渲染一个特定的 AUFilePlayer。
可能吗?
更新
我在评论中看到我的问题缺乏细节。 我有我的 AUGraph 的当前设置:
AUFilePlayer -> AUMixer -> AUOutput
我使用特定的 AudioFileID 设置了 AUFilePlayer。
当我启动图表时,我只想 "start" 图表而没有任何声音。 稍后我想做类似的事情:AUFilePlayer.Play() 开始发出声音。
不知道有没有可能...
更新:找到解决方法
我想我找到了解决方法。有关详细信息,请参阅我的答案。
我找到了以下解决方法:
当我设置我的 AUFilePlayer 时,我将 ScheduledAudioFileRegion
结构的值 mFramesToPlay
设置为:
ScheduledAudioFileRegion audio_file_region;
/*... init values...*/
audio_file_region_.mFramesToPlay = 0;
而不是
audio_file_region_.mFramesToPlay = number_of_frames_for_the_audio_file;
这样当我启动图形时,AUFilePlayer 不会播放任何声音。
然后我有一个方法 Play()
,我在其中设置正确的帧以播放 mFramesToPlay
字段。
我不知道这样做是否是个好方法,但它确实起作用了。