Все мои аудио на p c отправляются в игру, кроме discord / et c, идущих в чат.
Так что в основном мне просто интересно, почему, когда я передаю правильный формат аудио в мой TargetDataLine It не работает ???
Я новичок в аудио в целом вместе с TargetDataLine .. Полностью незнаком с этим классом.
Не лучше ли использовать BufferedIN / OUTReader с обработкой это?
Еще не пытались.
import java.io.*;
import javax.sound.sampled.*;
public class CaptureFromSoundCard
{
boolean stopCapture = false;
AudioFormat audioFormat;
TargetDataLine targetDataLine;
BufferedOutputStream out = null;
BufferedInputStream in = null;
public static void main(String[] args)
{
CaptureFromSoundCard tx = new CaptureFromSoundCard();
tx.captureAudio();
}
private void captureAudio()
{
try
{
Mixer.Info[] mixerInfo = AudioSystem.getMixerInfo();
audioFormat = getAudioFormat();
DataLine.Info dataLineInfo = new DataLine.Info(TargetDataLine.class, audioFormat);
Mixer mixer = AudioSystem.getMixer(mixerInfo[1]);
System.out.println(mixer.getMixerInfo()); //1 is target 48,000hz, 16bit, stereo(2ch), signed, nobigEndian
targetDataLine = (TargetDataLine) mixer.getLine(dataLineInfo);
targetDataLine.open(audioFormat);
targetDataLine.start();
Thread captureThread = new CaptureThread();
captureThread.start();
}
catch (Exception e)
{
System.out.println(e);
System.exit(0);
}
}
private AudioFormat getAudioFormat()
{
float sampleRate = 48000.0F;
int sampleSizeInBits = 16;
int channels = 2;
boolean signed = true;
boolean bigEndian = false;
return new AudioFormat(sampleRate, sampleSizeInBits, channels, signed, bigEndian);
}
class CaptureThread extends Thread
{
byte tempBuffer[] = new byte[10000];
public void run()
{
stopCapture = false;
try
{
while (!stopCapture)
{
int cnt = targetDataLine.read(tempBuffer, 0, tempBuffer.length);
out.write(tempBuffer);
}
}
catch (Exception e)
{
System.out.println(e);
System.exit(0);
}
}
}
}
Не знаком с обработкой звука.
run:
Headphones (5- Arctis Pro Wireless Game), version Unknown Version
java.lang.IllegalArgumentException: Line unsupported: interface TargetDataLine supporting format PCM_SIGNED 48000.0 Hz, 16 bit, stereo, 4 bytes/frame, little-endian
BUILD SUCCESSFUL (total time: 0 seconds)
Выход выше Имейте в виду, что это среда IDE NetBeans 8.2, в которой я работаю.