Estoy usando Mjsip para crear un softphone. En el código hay tres opciones de tipo para straming de audio.¿Por qué JMF no está trabajando en la transmisión de audio con Mjsip?
- Usando JMF (Java Media Framework)
- Uso de Java Audio
- Usando RAT (Herramienta de audio robusto)
no estoy utilizando la rata. Su valor ha sido hecho falso por mí mismo. Este es el siguiente código para llamar a JMF:
public JMFAudioLauncher(int local_port, String remote_addr, int remote_port, int direction, Log logger)
{
log=logger;
localport=local_port;
remoteport=remote_port;
remoteaddr=remote_addr;
// Patch for working with JMF with local streams
if (remote_addr.startsWith("127."))
{
printLog("Patch for JMF: replaced local destination address "+remote_addr+" with 255.255.255.255");
remote_addr="255.255.255.255";
}
dir=direction;
if (dir>=0) sender=new JMediaSender("audio",null,remote_addr,remote_port);
if (dir<=0) receiver=new JMediaReceiver("audio",local_port,null);
}
/** Starts media application */
public boolean startMedia()
{
printLog("launching JMF-Audio...");
String err1=null, err2=null;
if (sender!=null) err1=sender.start();
if (err1!=null) printLog("Error trying to send audio stream: "+err1);
if (receiver!=null) err2=receiver.start();
if (err2!=null) printLog("Error trying to receive audio stream: "+err2);
return (err1==null && err2==null);
}
/** Stops media application */
public boolean stopMedia()
{
String err1=null, err2=null;
if (sender!=null) err1=sender.stop();
if (err1!=null) printLog("Error stopping audio sender: "+err1);
if (receiver!=null) err2=receiver.stop();
if (err2!=null) printLog("Error stopping audio receiver: "+err2);
return (err1==null && err2==null);
}
Pero no está siendo lanzado. Todavía puedo hablar con mi softphone. Sin embargo, en el registro que muestra ...
UA: REGISTRATION
UA: Registration success: 200 OK
UA: INCOMING
UA: CONFIRMED/CALL
UA: Error trying to create the JMFAudioLauncher
AudioInput: TargetDataLine: [email protected]
AudioOutput: SourceDataLine: [email protected]
AudioLauncher: starting java audio..
pero utilizando el valor JMF es cierto para el user_agent_profile y el error genera a partir de este código.
if (user_profile.audio && local_audio_port!=0 && remote_audio_port!=0)
{
if (user_profile.use_rat)
// create an audio_app and start it
{
audio_app=new RATLauncher(user_profile.bin_rat,local_audio_port,remote_media_address,remote_audio_port,log);
}
else if (user_profile.use_jmf)
{
// check if JMF is supported
try
{
Class myclass=Class.forName("local.ua.JMFAudioLauncher");
Class[] parameter_types={ Class.forName("int"), Class.forName("java.lang.String"),Class.forName("int"), Class.forName("int"), Class.forName("org.zoolu.tools.Log") };
Object[] parameters={ new Integer(local_audio_port), remote_media_address, new Integer(remote_audio_port), new Integer(dir), log };
java.lang.reflect.Constructor constructor=myclass.getConstructor(parameter_types);
audio_app=(MediaLauncher)constructor.newInstance(parameters);
}
catch (Exception e)
{
printException(e,LogLevel.HIGH);
printLog("Error trying to create the JMFAudioLauncher",LogLevel.HIGH);
}
}
// else
if (audio_app==null)
{
// for testing..
String audio_in=null;
if (user_profile.send_tone) audio_in=JAudioLauncher.TONE;
else if (user_profile.send_file!=null) audio_in=user_profile.send_file;
String audio_out=null;
if (user_profile.recv_file!=null) audio_out=user_profile.recv_file;
//audio_app=new JAudioLauncher(local_audio_port,remote_media_address,remote_audio_port,dir,log);
audio_app=new JAudioLauncher(local_audio_port,remote_media_address,remote_audio_port,dir,audio_in,audio_out,user_profile.audio_sample_rate,user_profile.audio_sample_size,user_profile.audio_frame_size,log);
}
audio_app.startMedia();
}
¿Qué puedo hacer para habilitar JMF?
Es posible que desee corregir la sangría de su código. Puedes ver cómo se ve. Arreglarlo lo hará al menos más legible. – Bart
@Bart: he mejorado algunas formas, ¿por qué estás diciendo que mi código es ilegible? Dame una sugerencia específica sobre el formato mejorado. Gracias –
@ Alvi_1987 A ver si tienes más suerte ahora. – Aristos