Tôi đang sử dụng Mjsip để tạo một softphone. Trong mã có ba loại tùy chọn cho âm thanh straming.Tại sao JMF không hoạt động trên luồng âm thanh với Mjsip?
- Sử dụng JMF (Java Media Framework)
- Sử dụng Java âm thanh
- Sử dụng RAT (mạnh mẽ âm thanh công cụ)
Tôi không sử dụng RAT. Giá trị của nó đã được thực hiện sai của bản thân mình. Đây là mã bên dưới để gọi 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);
}
Nhưng nó không được khởi chạy. Tôi vẫn có thể nói chuyện với softphone của mình. Nhưng trong nhật ký hiển thị ...
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..
Nhưng việc sử dụng giá trị JMF là đúng cho user_agent_profile và lỗi phát sinh từ mã này.
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();
}
Tôi có thể làm gì để bật JMF?
Bạn có thể muốn sửa lỗi thụt dòng mã của mình. Bạn có thể thấy nó trông như thế nào. Sửa chữa nó sẽ làm cho nó ít nhất là dễ đọc hơn. – Bart
@Bart: Tôi đã cải thiện một số formtting, thực sự tại sao bạn đang nói mã của tôi là không thể đọc được? Cung cấp cho tôi các đề xuất cụ thể về định dạng được cải thiện. Cảm ơn –
@ Alvi_1987 Hãy xem bạn có may mắn hơn không. – Aristos