QA@IT
«回答へ戻る

回答を投稿

出力するミキサーが見つからないといったエラーになりますので、
PCのサウンド環境を確認してみてください。
(サウンド機能がオフになっていたりしないか)

例えば私の環境だと、マイクを指しておかないとRecorderのコンストラクタで同様のエラーが発生します。

あとはbit数などを調整してみる手もあると思います。
BITSを24, HZを44100, MONOを2(チャンネル数2なのでステレオですが)にしてみるとか。

Voice.javaの最初に以下の様なコードを書くとdefaultミキサーがサポートしている
組み合わせが表示できるみたいなので参考になるかもしれません。
(実際はdefault以外のミキサーも検索されるのでこれで表示されるものだけではないのですが)

(参考: http://stackoverflow.com/questions/6002444/java-recording-from-mixer )

public static void main( String[] args )
{
  Mixer mixer = AudioSystem.getMixer(null); // default mixer
  try {
    mixer.open();
    System.out.printf("Supported SourceDataLines of default mixer (%s):\n\n", mixer.getMixerInfo().getName());
    for(Line.Info info : mixer.getSourceLineInfo()) {
        if(SourceDataLine.class.isAssignableFrom(info.getLineClass())) {
            SourceDataLine.Info info2 = (SourceDataLine.Info) info;
            System.out.println(info2);
            System.out.printf("  max buffer size: \t%d\n", info2.getMaxBufferSize());
            System.out.printf("  min buffer size: \t%d\n", info2.getMinBufferSize());
            AudioFormat[] formats = info2.getFormats();
            System.out.println("  Supported Audio formats: ");
            for(AudioFormat format : formats) {
                System.out.println("    "+format);
            }
            System.out.println();
        } else {
            System.out.println(info.toString());
        }
        System.out.println();
    }

    mixer.close();
  } catch (LineUnavailableException e1) {
    // TODO 自動生成された catch ブロック
    e1.printStackTrace();
  }
出力するミキサーが見つからないといったエラーになりますので、
PCのサウンド環境を確認してみてください。
(サウンド機能がオフになっていたりしないか)

例えば私の環境だと、マイクを指しておかないとRecorderのコンストラクタで同様のエラーが発生します。


あとはbit数などを調整してみる手もあると思います。
BITSを24, HZを44100, MONOを2(チャンネル数2なのでステレオですが)にしてみるとか。

Voice.javaの最初に以下の様なコードを書くとdefaultミキサーがサポートしている
組み合わせが表示できるみたいなので参考になるかもしれません。
(実際はdefault以外のミキサーも検索されるのでこれで表示されるものだけではないのですが)

(参考: http://stackoverflow.com/questions/6002444/java-recording-from-mixer )

```java
public static void main( String[] args )
{
  Mixer mixer = AudioSystem.getMixer(null); // default mixer
  try {
    mixer.open();
    System.out.printf("Supported SourceDataLines of default mixer (%s):\n\n", mixer.getMixerInfo().getName());
    for(Line.Info info : mixer.getSourceLineInfo()) {
        if(SourceDataLine.class.isAssignableFrom(info.getLineClass())) {
            SourceDataLine.Info info2 = (SourceDataLine.Info) info;
            System.out.println(info2);
            System.out.printf("  max buffer size: \t%d\n", info2.getMaxBufferSize());
            System.out.printf("  min buffer size: \t%d\n", info2.getMinBufferSize());
            AudioFormat[] formats = info2.getFormats();
            System.out.println("  Supported Audio formats: ");
            for(AudioFormat format : formats) {
                System.out.println("    "+format);
            }
            System.out.println();
        } else {
            System.out.println(info.toString());
        }
        System.out.println();
    }

    mixer.close();
  } catch (LineUnavailableException e1) {
    // TODO 自動生成された catch ブロック
    e1.printStackTrace();
  }
```