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 に答える