0

我需要编写一些 java 代码来收听其他进程产生的音频。我环顾四周,似乎我应该使用 PulseAudio。如果我没记错的话,我需要定义一个接收器作为我的 java 进程,并告诉源(alsa?)去那里。我没有找到有关如何执行此操作的任何详细信息。

而且 - 我应该在 java 端使用什么?这给了我 0 个混音器:

Info[] mis = AudioSystem.getMixerInfo();
for (Info mi : mis)
{
    System.out.println(mi.getName());
    System.out.println(mi.getVendor());
    System.out.println(mi.getDescription());
    System.out.println("---------------");
}
4

1 回答 1

0

最后我设法得到这个工作。我相信这可以做得更短一些,所以请免费填写以纠正我:

  • 创建一个环回接收器:sudo modprobe snd-aloop
  • 检查音频接收器列表:aplay -l。如果你有一个真正的声卡,环回将是卡 1。
  • 创建(或编辑).asoundrc 文件:cat > ~/.asoundrc.

把这个放在那里:

pcm.!default {
 type hw
 card 1
 device 0
}

这将指导从这里开始的所有进程使用环回进行音频输出。

  • 安装 PulseAudio 音量控制:sudo apt-get install pavucontrol
  • 打开音量控制应用程序并确保没有将真实卡标记为回退,并且回送是(在“输出”下)。
  • 这将使用 System.in 流将音频发送到 java 进程:arecord -D hw:1,1 -f cd | java -jar some-java-code.jar
于 2015-02-02T16:12:28.940 回答