Reproducir audio con Java "sin latencia"
Publicado por Josep M Andrés Moscardó (3 intervenciones) el 23/09/2011 23:15:23
Hola, me presento. Soy Josep Manel, estudiante de informática. Estoy poniendo en marcha un proyecto que consiste en un disparador de samples (trozos de audio) usando Java. Para ello utilizo la libreria JMF. El problema es que obtengo un retraso entre que puso el jBotton y cuando empieza a escucharse el sonido.
Supongo que para obtener una latencia razonable no deberia de codificarlo con Java. ¿Que opinais?
1a pregunta. ¿Es la mejor opción utilizar JMF?
2a pregunata ¿Deberia cargar el player cuando se pulsa el botón?
Declaro el codec en el constructor:
public Principal() {
initComponents();
/////////////////////////////
//Agrupem els botons
butGroupTot.add(rdbCurta);
butGroupTot.add(rdbLlarga);
////////////////////////////////////////////////////////////
Format input1 = new AudioFormat(AudioFormat.MPEGLAYER3);
Format input2 = new AudioFormat(AudioFormat.MPEG);
Format output = new AudioFormat(AudioFormat.LINEAR);
PlugInManager.addPlugIn(
"com.sun.media.codec.audio.mp3.JavaDecoder",
new Format[]{input1, input2},
new Format[]{output},
PlugInManager.CODEC
);
}
Y cargo el Player quando se pulsa el boton.
private void jButVivaActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try{
Player player = Manager.createPlayer(getClass().getResource("/Audios/corte1.mp3"));
player.start();
}
catch(Exception ex){
ex.printStackTrace();
}
}
Gracias.
Supongo que para obtener una latencia razonable no deberia de codificarlo con Java. ¿Que opinais?
1a pregunta. ¿Es la mejor opción utilizar JMF?
2a pregunata ¿Deberia cargar el player cuando se pulsa el botón?
Declaro el codec en el constructor:
public Principal() {
initComponents();
/////////////////////////////
//Agrupem els botons
butGroupTot.add(rdbCurta);
butGroupTot.add(rdbLlarga);
////////////////////////////////////////////////////////////
Format input1 = new AudioFormat(AudioFormat.MPEGLAYER3);
Format input2 = new AudioFormat(AudioFormat.MPEG);
Format output = new AudioFormat(AudioFormat.LINEAR);
PlugInManager.addPlugIn(
"com.sun.media.codec.audio.mp3.JavaDecoder",
new Format[]{input1, input2},
new Format[]{output},
PlugInManager.CODEC
);
}
Y cargo el Player quando se pulsa el boton.
private void jButVivaActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try{
Player player = Manager.createPlayer(getClass().getResource("/Audios/corte1.mp3"));
player.start();
}
catch(Exception ex){
ex.printStackTrace();
}
}
Gracias.
Valora esta pregunta
0