来自音频输出或混音器的Java记录

时间:2016-02-17 20:47:47

标签: java audio

我搜索了互联网但我找不到解决方案。我想申请录制扬声器的声音。 我尝试了这段代码,但是只允许我从麦克风录制。 我感谢所有帮助我的人

try {
    AudioFormat format = getAudioFormat();
    DataLine.Info info = new DataLine.Info(TargetDataLine.class, format);

    // checks if system supports the data line
    if (!AudioSystem.isLineSupported(info)) {
        System.out.println("Line not supported");
        System.exit(0);
    }
    line = (TargetDataLine) AudioSystem.getLine(info);

    line.open(format);
    line.start();   // start capturing

    System.out.println("Start capturing...");

    AudioInputStream ais = new AudioInputStream(line);

    System.out.println("Start recording...");

    // start recording
    AudioSystem.write(ais, fileType, wavFile);

} catch (LineUnavailableException ex) {
    ex.printStackTrace();
} catch (IOException ioe) {
    ioe.printStackTrace();
}

我尝试使用此代码

         Mixer.Info mixers[] = AudioSystem.getMixerInfo();
         Mixer.Info mixer_info = null;

        for(int i=0;i<mixers.length;i++)
            if(mixers[i].getName().contains("altoparlanti"))
            {
                mixer_info=mixers[i];
            }

        Mixer mixer = AudioSystem.getMixer(mixer_info);


        AudioFormat format = getAudioFormat();
        DataLine.Info info = new DataLine.Info(TargetDataLine.class, format);
        //Port.Info info = Port.Info.MICROPHONE;

        // checks if system supports the data line
        if (!AudioSystem.isLineSupported(info)) {
            System.out.println("Line not supported");
            System.exit(0);
        }

        line = (TargetDataLine) mixer.getLine(info);

它给了我这个错误,错误行是最后的

 Exception in thread "main" java.lang.IllegalArgumentException: Line unsupported: interface TargetDataLine supporting format PCM_SIGNED 16000.0 Hz, 8 bit, stereo, 2 bytes/frame, 
at   com.sun.media.sound.DirectAudioDevice.getLine(DirectAudioDevice.java:174)
at JavaSoundRecorder.start(JavaSoundRecorder.java:65)

0 个答案:

没有答案