8

JavaFx で出力デバイスを指定する方法を探しています

この質問と同様の問題があります: JavaFX specific Audio Outputですが、ニーズが異なります。

可能なすべてのオーディオ出力デバイス (ユーザー設定に表示されるものなど) のリストを取得し、JavaFx でオーディオを出力するデバイスをユーザーが選択できるようにする方法が必要です。これは、あらゆる音楽/メディア API に含まれる必要がある非常に基本的な機能のように思われ、ほとんどのオーディオ ソフトウェアに不可欠です。

私はJavaFx でMediaPlayerを使用していますが、別のクラスがあれば喜んで使用します。ただし、ビデオ(オーディオ出力の指定)にも同じ機能が必要なので、両方で機能するクラス/ソリューションが必要です。

JavaFx 8 に役立つものがあれば、それがリリースされるまでいつでも待つことができます。

私が本当に期待していたのは、 Screensクラスと同じものでした。

Screen.getScreens() // Gets an observable list of all screens.

私はハックなソリューションで大丈夫です。本当に、うまくいくものは何でも。

4

2 に答える 2

1

何年もの間、OS X の Java 実装の非常に残念な制限でした。ところで、そのプラットフォームに固有のものであり、「Java サウンド オーディオ エンジン」がプログラムで利用できる唯一の出力オーディオ ラインです。その結果、この行に送信するもの、つまり、作成した Java アプリケーションから送信するものはすべて、OS X でデフォルトの出力として設定されているもの、通常は内部スピーカーに常にルーティングされます。したがって、JSAE は「デフォルトのオーディオ出力」を表す単なる Java 用語です。私たちの理解では、残念ながら、これは最新のリリースにも当てはまります。

なぜ不幸なのですか?質素なオーディオ ルーティングでさえ効果的に無効にするためです。私たちはこれらの問題に日々取り組んでおり、あらゆる種類の複雑さを増している必要があります。回避策はありますが、SoundFlow や HiJack Pro などのサードパーティ アプリを使用します。たとえば、www.soundPimp.com。

于 2013-08-15T14:30:53.677 に答える
1

assylias が指摘しているように、 getmixerinfo メソッドが役立ちます

        Info[] mixerInfo =  AudioSystem.getMixerInfo();

    for(int i = 0; i < mixerInfo.length; i++)
    {
         System.out.println(mixerInfo[i].getName());
    }

ここで詳細を調べることができます

于 2013-08-15T20:30:28.120 に答える