Tenho varias saidas de audio no meu computador, e eu quero tocar diferentes musicas para cada saida de audio.
Estou usando um pedaco do exemplo do programa JLGUI.
Para isso preciso identificar todas as linhas/mixers diferentes para depois atribuir um playback de audio em cada uma delas.
O problema e' que eu nao consigo de jeito nenhum achar as Line's pra mudar isso.
BasicPlayerTest test = new BasicPlayerTest();
test.play("F:\\Music\\American\\John Mayer\\Heavier Things\\01 Clarity.mp3");
protected void createLine() throws LineUnavailableException
{
log.info("Create Line");
if (m_line == null)
{
AudioFormat sourceFormat = m_audioInputStream.getFormat();
log.info("Create Line : Source format : " + sourceFormat.toString());
int nSampleSizeInBits = sourceFormat.getSampleSizeInBits();
if (nSampleSizeInBits <= 0) nSampleSizeInBits = 16;
if ((sourceFormat.getEncoding() == AudioFormat.Encoding.ULAW) || (sourceFormat.getEncoding() == AudioFormat.Encoding.ALAW)) nSampleSizeInBits = 16;
if (nSampleSizeInBits != 8) nSampleSizeInBits = 16;
AudioFormat targetFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, sourceFormat.getSampleRate(), nSampleSizeInBits, sourceFormat.getChannels(), sourceFormat.getChannels() * (nSampleSizeInBits / 8), sourceFormat.getSampleRate(), false);
log.info("Create Line : Target format: " + targetFormat);
// Keep a reference on encoded stream to progress notification.
m_encodedaudioInputStream = m_audioInputStream;
try
{
// Get total length in bytes of the encoded stream.
encodedLength = m_encodedaudioInputStream.available();
}
catch (IOException e)
{
log.error("Cannot get m_encodedaudioInputStream.available()", e);
}
// Create decoded stream.
m_audioInputStream = AudioSystem.getAudioInputStream(targetFormat, m_audioInputStream);
AudioFormat audioFormat = m_audioInputStream.getFormat();
DataLine.Info info = new DataLine.Info(SourceDataLine.class, audioFormat, AudioSystem.NOT_SPECIFIED);
Mixer mixer = getMixer(m_mixerName);
if (mixer != null)
{
log.info("Mixer : "+mixer.getMixerInfo().toString());
m_line = (SourceDataLine) mixer.getLine(info);
}
else
{
m_line = (SourceDataLine) AudioSystem.getLine(info);
m_mixerName = null;
}
log.info("Line : " + m_line.toString());
log.debug("Line Info : " + m_line.getLineInfo().toString());
log.debug("Line AudioFormat: " + m_line.getFormat().toString());
}
}
m_line = (SourceDataLine) AudioSystem.getLine(info);
Info[] info = AudioSystem.getMixerInfo();
for (int i = 0; i <= info.length-1; i++) {
System.out.println(info[i].getName());
}
Primary Sound Driver Speakers (G510 Gaming Keyboard) SPDIF Interface (TX1) (VIA High Definition Audio) Digital Output Device (HDMI TX0) (VIA High Definition Audio) Speakers (VIA High Definition Audio) Primary Sound Capture Driver Microphone (3- USB Audio Device CD Audio (VIA High Definition A Stereo Mix (VIA High Definition Microphone (G510 Gaming Keyboar Port Speakers (G510 Gaming Keyboard) Port SPDIF Interface (TX1) (VIA High Port Digital Output Device (HDMI TX0 Port Speakers (VIA High Definition A Port CD Audio (VIA High Definition A Port Stereo Mix (VIA High Definition Port Microphone (G510 Gaming Keyboar Port Microphone (3- USB Audio Devicemas nao consigo achar as SourceLine's direito
AudioFormat audioFormat = new AudioFormat(44100, 16, 2, true, false);
DataLine.Info info = new DataLine.Info(SourceDataLine.class,audioFormat, 44100);
javax.sound.sampled.Line.Info[] test = AudioSystem.getSourceLineInfo(info);
for (int i = 0; i <= test.length - 1; i++) {
System.out.println(test[i].toString());
}
interface SourceDataLine supporting 8 audio formats, and buffers of at least 32 bytes interface SourceDataLine supporting 8 audio formats, and buffers of at least 32 bytes interface SourceDataLine supporting 8 audio formats, and buffers of at least 32 bytes interface SourceDataLine supporting 8 audio formats, and buffers of at least 32 bytes interface SourceDataLine supporting 8 audio formats, and buffers of at least 32 bytesalguma ajuda? perdao pelo post gigante!
Abracos e sucesso