Java me 通过SIP连接的J2ME音频流
我正在创建一个J2ME实时流媒体音频播放器,带有RTP和SIP连接。我对这些东西也是新手。我想深入研究这些事情。如果任何人都知道一个很好的工作示例代码,该代码演示了使用RTP的音频播放器流(这意味着如何通过SIP向服务器发送Java me 通过SIP连接的J2ME音频流,java-me,audio-streaming,sip,rtp,sdp,Java Me,Audio Streaming,Sip,Rtp,Sdp,我正在创建一个J2ME实时流媒体音频播放器,带有RTP和SIP连接。我对这些东西也是新手。我想深入研究这些事情。如果任何人都知道一个很好的工作示例代码,该代码演示了使用RTP的音频播放器流(这意味着如何通过SIP向服务器发送REGISTER消息以获得注册,并发送INVITE消息并获得响应和播放)。请让我知道,非常感谢 我也看了 如果 我的服务器端口是6060 ip 111.111.111.1 id是myid密码123 我是否正确使用了代码?如果我错了,请让我改正 public void doRe
REGISTER
消息以获得注册,并发送INVITE
消息并获得响应和播放)。请让我知道,非常感谢
我也看了
如果
我的服务器端口是6060ip 111.111.111.1
id是myid密码123 我是否正确使用了代码?如果我错了,请让我改正
public void doRegister(String username, String password, String realm) {
SipClientConnection scc = null;
SipConnectionNotifier scn = null;
String contact = null;
try {
scn = (SipConnectionNotifier) Connector.open("sip:5080");
contact = new String("sip:myid:123@"+scn.getLocalAddress()+":"+scn.getLocalPort());
scc = (SipClientConnection) Connector.open("sip:111.111.111.1+"transport=tcp") ;
scc.initRequest("REGISTER", scn);
scc.setHeader("From", "sip:myid:123@"+scn.getLocalAddress()+":5080");
scc.setHeader("To", "sip:myid:123@111.111.111.1");
scc.setHeader("Contact", contact);
scc.send();
boolean handled = false;
int scode = 0;
while(!handled) {
SipHeader sh;
scc.receive(30000);
scode = scc.getStatusCode();
switch(scode){
case 401:
sh = new SipHeader("WWW-Authenticate",
scc.getHeader("WWW-Authenticate"));
realm = sh.getParameter("realm");
scc.setCredentials(username, password, realm);
break;
case 407:
sh = new SipHeader("Proxy-Authenticate",
scc.getHeader("Proxy-Authenticate"));
realm = sh.getParameter("realm");
scc.setCredentials(username, password, realm);
break;
case 200:
handled = true;
break;
default:
handled = true;
}
}
scc.close();
} catch(Exception ex) {
// handle Exceptions
}
}
我得到了回复,回复信息是180索具
。同时让我知道这里的领域是什么<代码>scc.setCredentials(用户名、密码、领域)代码>如您在示例1中所看到的—您意识到,当您向服务器发出新请求时,服务器将首先发送401。通过看到这一点,客户端可以搜索密码或询问用户。当服务器发送401响应代码时,它指定哪个安全域适用于给定的请求。这已经是代码中的内容:
realm = sh.getParameter("realm");
一旦失败,您需要在此处使用凭据再次发送请求。我猜setCredentials()
函数只是在scc
对象内设置这些参数,当再次调用send()
时,它们将被应用
可能感兴趣的一些参考资料:。。
(这里有人遇到了与端口号相关的问题,我不确定这是否会困扰您)有很多功能和更多功能,可以找到广泛的答案,诺基亚JSR180 API也有示例代码仅供参考:SIP和RTSP是两种不同的会话信令协议。SDP与发送请求无关:它以基于文本的格式描述媒体会话。RTSP和SIP可以使用SDP来设置会话。我建议阅读IETF RFC以更好地理解协议。(RTP:RFC3550,SDP:RFC4566,RTSP:RFC2326,SIP:RFC3261)谢谢拉尔夫。我对这些东西还是新手。我来看看你的建议。请告诉我是否有一台服务器可以同时处理SIP和RTSP,并发送响应。(也就是说,如果服务器有音频文件,服务器是否可以根据请求在RTSP或SIP中发送音频文件?)。另一件事是,SDP是否与SIP和RTSP一起始终描述会话/请求或响应内容?SIP和RTSP在不同的端口上运行,并且是完全不同的协议,我要说的是,服务器不太可能同时支持这两种协议,RTSP通常用于基于文件的VOD媒体以及实时流媒体(它被描述为具有播放、停止、暂停功能的虚拟VCR遥控器),而SIP通常用于电话会议和会话场景。通常,SDP是描述媒体会话的广泛使用的协议,尽管存在其他标准化工作。SDP通常是RTSP描述的答案,并具有SIP提供/应答交换中的功能。非常感谢Ralf。我有一个主意。如果我没有阻碍的话你,你能让我知道更多关于SDP和RTSP如何与示例函数一起工作的信息吗?(从你的解释中我对SIP和RTSP有了清晰的了解,再次感谢你)非常感谢迪潘。我已经提到了你的第一个链接。我也看了你的第二个链接。