Audio OpenAL播放声音,一个实例,其他所有的声音分散?

Audio OpenAL播放声音,一个实例,其他所有的声音分散?,audio,audio-streaming,openal,Audio,Audio Streaming,Openal,我使用OpenAL在我的NPAPI插件浏览器中播放网络流的声音。当我打开多个浏览器选项卡时,我会关闭其中一个选项卡,其他选项卡的声音也会消失。有人能帮我吗?或者任何人都可以给我一些关于播放流音频的建议,比如来自麦克风或类似设备的音频。当我使用音频队列服务时,它仍然不能支持多实例。由于工作的原因,我无法将我的代码粘贴到那里,对此我深表歉意。我用OpenAL作为苹果开发者的例子——oalTouch,链接是 我使用系统默认设备播放声音,这意味着我使用alcOpenDeviceNULL打开设备。当包含

我使用OpenAL在我的NPAPI插件浏览器中播放网络流的声音。当我打开多个浏览器选项卡时,我会关闭其中一个选项卡,其他选项卡的声音也会消失。有人能帮我吗?或者任何人都可以给我一些关于播放流音频的建议,比如来自麦克风或类似设备的音频。当我使用音频队列服务时,它仍然不能支持多实例。由于工作的原因,我无法将我的代码粘贴到那里,对此我深表歉意。我用OpenAL作为苹果开发者的例子——oalTouch,链接是


我使用系统默认设备播放声音,这意味着我使用alcOpenDeviceNULL打开设备。

当包含插件的页面关闭时,插件的相应实例将被销毁;每个插件有一个实例在浏览器中同时处于活动状态。想必问题是你在插件实例中做的一些事情会破坏一些全局性的东西


如果看不到你的代码在做什么,就很难看到有人能帮你弄清楚那是什么。

现在我找到了原因。OpenAL确实支持多音频源,但当我使用它作为oalTouch示例时,我没有做任何更改。我之所以关闭一个浏览器的标签,声音停止是因为当我销毁插件实例时,设备被我关闭了。因此,如果我想在多个实例中使用它,我应该仔细地设计它,这就是我的设计:我使用静态变量来指示默认设备是否已打开,如果已打开,我不会再次打开它使用alOpenDeviceNULL方法。但是对于不同的选项卡,我使用不同的sourceId alGenSource。。。方法采用。当我关闭浏览器的teb时,插件实例也被销毁。我使用静态变量检查是否仍有插件实例使用默认音频设备,如果是,则不执行任何操作,否则关闭设备。

我几乎找不到有关OpenAL的资源,我只使用苹果的示例oalTouch。不,我找到了原因——这是因为在我的每个插件实例中,我使用了它自己的openAL对象,但它设计了在初始化时打开默认音频设备,在发布时关闭设备。我应该检查设备的状态,并使用不同的sourceId来区分不同的插件实例。如果没有其他插件使用该设备,请将其关闭。在这些更改之后,它现在支持多个选项卡。谢谢你的回答。