我已经设法使用 Java 的 JAIN-SIP API 建立了一个 SIP 呼叫。
现在我想在建立对话后播放一些视频。我读过 SDP 和 RTP 可以做到这一点,并且我找到了多个关于如何在 SIP 数据包中定义 SDP/RTP 主体的示例。
但是一旦你在节点上协商了能力等,你如何实际启动 RTP 流?您是在 Java 应用程序外部还是内部启动 RTP 流服务器?如果是这样,怎么做?链接是什么?
在我能在网上找到的内容中,节点只是“开始交换 RTP 数据包”。
谢谢你。
您需要一个 RTP 堆栈。刚开始时,最好将所有内容放在同一个应用程序中。JMF (Java Media Framework), (JMF-RTP Architecture)是一个很好的起点,尽管还有其他类似JRTP的地方。JMF 视频细节可以在这里找到
尝试搜索关键字“re-INVITE”和适当的示例。一旦您发现自己需要另一个音频/视频流到现有 SIP 呼叫中,您需要启动新的 INVITE / OK / ACK 序列。新流可以替换您现有的媒体流,也可以添加。这是您的选择,这取决于信号。当然,您需要具有支持能力/编解码器的 RTP 堆栈来满足您的实际需求。
人们经常使用它来处理 SIP 呼叫中的 T.38 传真交换。您可以从支持 T.38(或实际上具有任何基于 IP 支持的调制解调器)的设备获取所需的参考日志转储调用。请记住,您的语音流应该是 LBR(低比特率)编解码器,例如 G.729 或 G.723.1。这可以为您带来许多答案,至少“何时”开始 RTP 以及如何发出信号。至少使用提议的新 RTP 流启动 INVITE,您应该从一开始就准备好接收该流。您可以在 OK 后使用建议的端口“where”发送 RTP 开始发送 RTP。