private void createLine() throws LineUnavailableException
{
if (this.sortieSon == null)
{
//récupérer le format de la source
AudioFormat sourceFormat = this.audioInputStream.getFormat();
//pour les fichiers MP3 choisis nSampleSizeInBits = 16;
AudioFormat targetFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED,
sourceFormat.getSampleRate(), 16,
sourceFormat.getChannels(),
2 * sourceFormat.getChannels(),
sourceFormat.getSampleRate(), false);
// garder une référence sur le flux audio pour la progression de la lecture
// encodedAudioInputStream est le format encodé de départ (IO)
// audioInputStream sera le format décodé (système audio)
this.encodedAudioInputStream = this.audioInputStream;
//Créer le flux décodé
this.audioInputStream = AudioSystem.getAudioInputStream(targetFormat, this.audioInputStream);
//récupérer le format décodé
AudioFormat audioFormat = this.audioInputStream.getFormat();
//Informer la sortie son
DataLine.Info info = new DataLine.Info(SourceDataLine.class, audioFormat, AudioSystem.NOT_SPECIFIED);
this.sortieSon = (SourceDataLine) AudioSystem.getLine(info);
}
}