使用 OpenAL 播放到特定频道

Posted

技术标签:

【中文标题】使用 OpenAL 播放到特定频道【英文标题】:Use OpenAL to playback to specific channel 【发布时间】:2017-05-23 14:33:02 【问题描述】:

我的系统目前使用两个 Dolby 7.1 声卡,每个声卡都使用 OpenAL/alsoft 将不同的立体声输出播放到不同的扬声器组。

由于我不需要两张卡上的所有输出通道,我希望移除系统中的一张声卡。

我已经通过修改我的 ALSA 配置文件证明了硬件支持它,并且我能够使用 aplay -D setA /tmp/sound.wav 和 ALSA PCM 仅向一组扬声器播放声音,并且仅向另一组扬声器播放相同的声音使用另一个 PCM:aplay -D setB /tmp/sound.wavsetAsetBasound.conf 文件中定义。

我查询 OpenAL/alsoft 时可用的播放设备有:

ALSA Software on Xonar DX [Multichannel] (hw:0,0)
ALSA Software on Xonar DX [Digital] (hw:0,1)

我希望能够创建映射到特定 ALSA PCM 的“虚拟”OpenAL 设备。这可能吗?

我可以在alsoft.conf 文件中指定一个 ALSA PCM(通过 device = 标记),但看不到映射alsoft 和 ALSA 设备的其他任何地方。

【问题讨论】:

【参考方案1】:

OpenAL 的最新主干具有我正在寻找的确切功能。

来自 OpenAL 维护者:https://openal.org/pipermail/openal/2017-May/000639.html

在最新版本中,您可以指定 ALSA PCM 通道到 OpenAL 设备的映射,如下所示:

[alsa]
custom-devices = Stereo Set 1=setA;Stereo Set 2=setB

格式为<OpenAL device name>=<ALSA device name>,每个条目用分号分隔(注意,保留前后空格,而不是去除)。这些添加到通常提供的设备列表中,并出现在 ALSA 默认设备之后。它目前也无法验证 ALSA 设备是否真正有效,如果不是,相关的 OpenAL 设备将无法打开。

具有此功能的官方 OpenAL 版本 1.18 似乎将于 2017 年 6 月发布。

【讨论】:

以上是关于使用 OpenAL 播放到特定频道的主要内容,如果未能解决你的问题,请参考以下文章

如何在 CoreMidi 曲目中播放特定频道?

如何使用 Discord.py Cogs 使 Discord Bot 加入语音频道并在成员加入频道时播放音频文件

即使其他人加入了频道,也继续播放歌曲

Discord bot:如何在语音频道中播放 mp3 文件

youtube API 从频道获取所有播放列表 ID:python

如何使用不和谐机器人将消息发送到特定频道?