我正在使用PJSIP的pjsua拨号器(基于pjsua_app.c,PJSIP 2.0.1)与TCP传输和SIP中继来拨打移动电话 . 拨号器通过TCP向SIP服务器注册,并通过TCP发送INVITES . 没有使用UDP传输 .

环境是这样的 -

PJSIP(NAT后面) SIP服务器 SIP中继提供商< - PSTN /移动网关 - >移动电话

所有呼叫都是通过TCP从PJSIP到移动设备 . 要禁用UDP传输创建,我在函数末尾插入了一行 "cfg->no_udp = true;"

"static void default_config(struct app_config *cfg)" in pjsua_app.c

我按照here给出的指令通过TCP进行调用 .

问题是我们没有收到从移动端发送到PJSIP拨号器的音频 . 但是来自PJSIP拨号器的RTP数据包到达移动端就好了 . 当呼叫 Build 时,我们可以在移动设备中听到音频 .

我们从数据包跟踪中发现,我们在PJSIP拨号器中不接收媒体的原因是SIP服务器正在通过SIP干线接收到的RTP数据包发送到私有IP地址 .

但是当我们切换到UDP进行注册并通过TCP发送INVITES时,调用工作正常(两端的音频) .

wireshark数据包捕获显示以下内容 -

1. PJSIP registers with server over TCP.

2. Server sends 401 with PJ's public IP and port in VIA

3. PJ registers again but inserts its public ip and port in the

contact header in the next REGISTER message sequence.

So far so good. Same sequence of messages seen when UDP is used to REGISTER.

4. INVITE sent over TCP. Dialog establishment works fine.

But in the record-route header nat=yes is missing.

5. Server sends media to private IP. No media received at PJSIP.

这是PJSIP中的错误吗?如果是这样,如何解决这个问题 . Wireshark数据包跟踪可根据要求提供 . 非常感谢您的帮助和意见 .

pjsip java_使用PJSIP通过TCP进行SIP呼叫相关推荐

  1. 关于sip呼叫成功后,对方立马挂断的情况说明

    最近在做SIP的接线员功能,类似于110这种,会有一些接线员提前上线:当外部人员拨打进来时,随机分配一个空闲的接线员来处理:若没有空闲的接线员,则系统自动发送一段系统正忙的声音给拨打方. 下面说说本人 ...

  2. 最常用的18个SIP呼叫业务流程详解(1~5)

    目录 1.Call Hold 2.Consultation Hold 3.Music on Hold 4.Transfer - Unattended 5.Transfer - Attended 在大部 ...

  3. 分析3CX SIP呼叫

    文章来源:https://3x.58voip.com/analyzing-sip-call/ 说明 本文档介绍了如何在3CX电话系统中建立SIP呼叫,以及将哪些事件写入3CX管理控制台中的" ...

  4. 最常用的18个SIP呼叫业务流程详解(6~18)

    目录 6.Transfer - Instant Messaging 7.Call Forwarding Unconditional 8.Call Forwarding - Busy 9.Call Fo ...

  5. Pjsip笔记之pjsip使用示例

    学习一个程序,最希望的就是有个demo,通过demo的API调用逻辑,跟踪程序的执行过程,了解里面的设计. Pjsip一个最简单的示例就是simple_pjsua.c,位于:pjsip_apps/sr ...

  6. android 点对点语音,使用Android SIP Stack进行点对点SIP呼叫?

    我一直被困在同样的问题上. 如果你可以在没有android sip api的情况下制作它,你可以查看rtp api,它为你提供了一些较低级别的工具来制作P2P VOIP应用程序,而无需服务器. To ...

  7. 解决asterisk sip呼叫 488 no acceptable here

    这两天实验了一下asterisk static realtime方案,将sip.conf的信息保存到mysql数据库里.但是呼叫的时候,总是 报 488  no acceptable here. 这是 ...

  8. 【网络通信 -- SIP 电话】项目实战记录 -- SIP 服务器 OPENSIPS 搭建测试与 SIP 客户端 PJSIP 编译安装测试

    [网络通信 -- SIP 电话]项目实战记录 -- SIP 服务器 OPENSIPS 搭建测试与 SIP 客户端 PJSIP 编译安装测试 [1]SIP 服务器 OPENSIPS 搭建 1.1 安装环 ...

  9. 介绍一个开源的SIP(VOIP)协议库PJSIP

    本文系转载,出处不可考. 假设你对SIP/VoIP技术感兴趣,哪希望你不要错过:),假设你对写出堪称优美的Code感兴趣 ,那么你也不可错过:) 这期间我想分析一下一个实际的协议栈的设计到实现的相关技 ...

最新文章

  1. 【Ghost Blog】如何给Ghost Blog添加背景音乐
  2. centos sudo不能运行_如何在 Linux 中配置 sudo 访问权限 | Linux 中国
  3. Intellij IDEA调试功能使用总结
  4. python pycharm 如何绘制类图 关系图 继承图 父子图?
  5. yii2 / 在这里有个叫BaseDataProvider的老爹
  6. 用Backbone.js创建一个联系人管理系统(一)
  7. 以太坊测试链环境node.js版本
  8. 为什么单例模式是邪恶的(译)
  9. Ubuntu 12.04 安装设置gcc4.4
  10. C++之面向对象模型
  11. 5.4监听socket
  12. 移动端rem布局(阿里)
  13. 物联网卡与人联网卡如何区分
  14. 15-2 mysql的数据类型
  15. 计算机维修的税收编码,维修费税收分类编码是多少?
  16. 详解如何在Sbo Add-on开发中使用Folder控件
  17. VHDL移位操作的两种方式,及乘除运算中小数倍的解法
  18. PDF转图片再转长图、python、pil
  19. 石墨文档入选「2021 数字经济产业 TOP100 榜单」
  20. 设计模式(二)—— 创建型模式

热门文章

  1. 人见人“吐”的十大经典广告(绝对超经典)[zzzz]
  2. 查找-查找的基本概念
  3. 大家知道32寸电视有多大吗
  4. nginx的请求转发配置
  5. 升级 GCC 支持C++11 或 configure: error: *** A compiler with support for C++11 language features is requir
  6. 「Swift」跳转至第三方App|淘宝、天猫、京东
  7. Axure RP9 进度条设置
  8. ubuntu18.04.3如何在终端下切换到指定文件夹或根目录
  9. 适用于火车头7.6的翻译插件-亲测10000篇文章稳定不报错
  10. android源码编译设置c++编译器,Android Stuido:使用CMake编译多个C/C++文件(1)