如何在SIP / SDP呼叫中启动RTP流

时间:2009-08-18 13:07:27

标签: java streaming sip rtp sdp

我设法使用JAIN-SIP API for Java设置SIP呼叫。

现在,我想在建立对话框后传输一些视频。我已经读过SDP和RTP可以实现这一点,我已经找到了关于如何在SIP数据包中定义SDP / RTP主体的多个例子。

但是,一旦您在节点上协商了功能等,您如何实际启动RTP流?您是在Java应用程序之外还是内部启动RTP流服务器?如果是这样,怎么样?链接是什么?

在我能够在网上找到的,节点只是“开始交换RTP数据包”。

谢谢。

2 个答案:

答案 0 :(得分:5)

您需要一个RTP堆栈。当您开始时,最好将所有内容保存在同一个应用程序中。 JMF(Java Media Framework),(JMF-RTP Architecture)是一个很好的起点,尽管还有其他像JRTP。可以找到JMF视频细节here

答案 1 :(得分:0)

尝试搜索关键字“re-INVITE”和相应的示例。 一旦您发现自己需要另一个音频/视频流进入已建立媒体的现有SIP呼叫,您需要启动新的INVITE / OK / ACK序列。 新流可以替换现有的媒体流或可以添加。这是你的选择,这取决于信号。当然,您需要具有支持功能/编解码器的RTP堆栈以满足您的实际需求。

人们经常实施此操作来处理SIP呼叫内的T.38传真切换。您可以从支持T.38的设备(或实际上具有IP支持的任何调制解调器)获取所需的参考日志转储呼叫。请记住,您的语音流应该是LBR(低比特率)编解码器,例如G.729或G.723.1。这可以为您提供至少“何时”启动RTP以及如何发出信号的许多答案。至少使用建议的新RTP流启动INVITE,您应该准备好从一开始就接收此流。您可以在OK之后开始发送RTP,建议端口'where'发送RTP。