我如何在任何连接的 USB 声卡上播放任何音频文件?

How I can play any audiofile to any connected usb audio card?

我有一台带 linux 的电脑,并连接了 3 个 USB 音频接口。每个音频接口都有一个立体声输出。 我有 6 个扬声器,通过 2 个连接到每个立体声输出。

我的目标是能够在任何频道的任何卡上播放任何声音。 例如,我需要在左声道的第一个声卡上播放敲击玻璃的声音,并在右声道的第二个声卡上播放一些自然的声音。

我查看了 mpg123,但没有在 man 中找到我想要的东西。

我更喜欢有下一个参数的播放器:

./example_player --audio_device=1 --channel=left glass.mp3

如果没有任何播放器满足我的要求,请建议任何 python 库,以便轻松制作我的 "example_player"。

谢谢!

我找到了答案。 我更喜欢 mplayer。它具有足够的功能来实现我的目标。

这个命令:

$ mplayer -af channels=2:2:0:0:1:0 song1.mp3

将在左扬声器上播放声音。 2(输出声道数):2(移动信号数):0:0(左声道路由到左声道)1:0(右声道路由到左声道)

要将声音路由到任何声卡,您应该使用此命令:

$ mplayer -ao alsa:device=hw=0.0 song2.mp3

要查看所有可用的 alsa 设备,请使用此命令:

$ aplay -l

在这里您会看到所有可用的 alsa 设备。 'hw'参数第一位为卡号,第二位为设备号。

当然你可以结合这两个命令:

$ mplayer -af channels=2:2:0:0:1:0 -ao alsa:device=hw=0.0 song3.mp3

我还发现 更有用 使用 PulseAudio 的解决方案!

使用 thic 命令列出所有可用的 PulseAudio 音频设备:

$ pactl list cards short

例如需要将声音输出到0卡(所有卡数字都以0开头):

$ mplayer -ao --pulse::0 file.mp3

这也行得通。