在pjsip 2.6的pjproject-2.6\pjsip-apps\src\pjsua 目录下,有个很好的例子,可以拨打单方通话和多方通话。

示例在:pjsua_app_cli.c里面static pj_status_t cmd_make_multi_call(pj_cli_cmd_val *cval)函数中。

多方通话的逻辑和单独拨打一个电话的逻辑是一样的,只是拨打一个电话,调用一次pjsua_call_make_call,而多方通话多次调用该接口,拨出多个电话。另外,在on_call_media_state中主要connect port,否则是听不到声音的。

拨打多方通话的代码:

    for (i=0; i<count; ++i) {pj_status_t status;status = pjsua_call_make_call(current_acc, &tmp, &call_opt, NULL, NULL, NULL);if (status != PJ_SUCCESS)break;}

connect port的方法:

比如A 先打电话给B,在打电话给C,进行3方通话,正常情况下,
A和B通话是这样连接:
/* Callback called by the library when call's media state has changed */
static void on_call_media_state(pjsua_call_id call_id)
{
    pjsua_call_info AandB;

pjsua_call_get_info(call_id, &AandB);

if (ci.media_status == PJSUA_CALL_MEDIA_ACTIVE) {
        // When media is active, connect call to sound device.
        pjsua_conf_connect(AandB.conf_slot, 0);
        pjsua_conf_connect(0, AandB.conf_slot);
    }
}

A和C通话是这样连接:
/* Callback called by the library when call's media state has changed */
static void on_call_media_state(pjsua_call_id call_id)
{
    pjsua_call_info AandC;

pjsua_call_get_info(call_id, &AandC);

if (ci.media_status == PJSUA_CALL_MEDIA_ACTIVE) {
        // When media is active, connect call to sound device.
        pjsua_conf_connect(AandC.conf_slot, 0);
        pjsua_conf_connect(0, AandC.conf_slot);
    }
}

上面这样链接后,A可以和B/C通话,但是B和C互相听不到对方的声音。
需要加入下面的步骤,这个可以在A和C的on_call_media_state调用后,在加入下面的两个connect:
pjsua_conf_connect(AandB.conf_slot, AandC.conf_slot);
pjsua_conf_connect(AandC, AandB.conf_slot);

这样A/B/C互相之间,都会听到对方的声音了。

pjsip 多方通话相关推荐

  1. Android 6.0 Phone 多方通话流程

    写在前面的话 本文主要分析Voice Call多方通话的流程,分析GSM和CDMA在多方通话不同的地方,研究的代码是Android 6.0的,目前只关注framework层. 1. 多方通话的概念 下 ...

  2. 智能电话会议系统(11)---Android 6.0 Phone 多方通话流程

    Android 6.0 Phone 多方通话流程 写在前面的话 本文主要分析Voice Call多方通话的流程,分析GSM和CDMA在多方通话不同的地方,研究的代码是Android 6.0的,目前只关 ...

  3. 多方通话中的VOIP通信原理

    多方通话中的VOIP通信原理 多方通话中Internet是由众多不同的计算机网络互连而成的,遍布世界各地,使用标准的TCP/IP相互通信和交换数据.TCP/IP将要传输的计算机数据分组排队发送,每个分 ...

  4. 基于mediasoup的多方通话研究(一)

    基于mediasoup的多方通话研究(一) mediasoup简介 mediasoup的特性 安装mediasoup-demo 本地运行Demo server的配置文件 mediasoup的原理 扩展 ...

  5. asterisk 三方/多方通话

    实现功能: 1.三方通话功能,只允许被叫通过##邀请第三方加入到通话 2.多方通话功能,座席可以通过拨打0000来启动多方通话. 3.多方通话功能,座席主叫可以通过**来启动多方通话. dialpla ...

  6. LoRa数字语音模块—全双工,多方通话,预留优先位

    太一通信的LoRa语音模块多方通话版包括TMK01-M.TMK02-M和TMK04-M. 模块采用宽带扩频技术,接收灵敏度高,节能环保,可专门用于二次系统集成和二次开发,支持全部对讲机功能. 模块只需 ...

  7. Phone 多方通话流程(GSM CDMA)

    写在前面的话 本文主要分析Voice Call多方通话的流程,分析GSM和CDMA在多方通话不同的地方,研究的代码是Android 6.0的,目前只关注framework层. 1. 多方通话的概念 下 ...

  8. 基于mediasoup的多方通话研究 webRtc

    基于mediasoup的多方通话研究(一) 基于mediasoup的多方通话研究(一) mediasoup简介 mediasoup的特性 安装mediasoup-demo 本地运行Demo serve ...

  9. FreeSWITCH调用接口 监听 多方通话 强转 抢接等,FreeSWITCH电话会议(动态库和restful接口)...

    为什么80%的码农都做不了架构师?>>>    #更多参考: http://freeswitch.net.cn/86.html 中间件下载地址,含windows,linux 旧版本下 ...

最新文章

  1. android 封装的popwindow,Android UI开发 popupwindow介绍以及代码实例
  2. 教你如何处理Nginx禁止ip加端口访问的问题
  3. 自动化录制脚本java_自动化java+webdriver常用的一些脚本
  4. python列表切片口诀-切片 - 廖雪峰的官方网站
  5. 006_Maven仓库
  6. Hadoop的伪分布安装 hadoop的核心思想
  7. java面试题7 牛客:关于AWT和Swing说法正确的是?
  8. 北大校友的算法被玩出新高度,AI自动化在线抠图
  9. Bootstrap带下拉的胶囊导航
  10. api token 什么意思_还分不清 Cookie、Session、Token、JWT?
  11. es2015(es6)基础知识整理(更新中...)
  12. 《高效团队开发:工具与方法》
  13. C/C++经典程序训练1---最大公约数与最小公倍数 SDUT ACM
  14. Centos66 编译 Freeswitch mod_shout mp3录音模块
  15. 【资源】16个在线机器学习视频与教程
  16. Ubuntu16.04安装搜狗拼音输入法(中文输入法)
  17. Python 办公自动化之全网最强最详细PDF 文件操作手册
  18. Python+Selenium多线程基础微博爬虫
  19. 17 -> 详解 openWRT 的 gpio 配置关系说明
  20. Scrum 计划、站会、评审、回顾会议介绍

热门文章

  1. 云计算机入门教学视频,AWS云计算实战-基础篇视频课程
  2. 你知道什么是 块设备 和 字符设备 吗?以及如何查看 块设备文件 和 字符设备文件 ?
  3. 学习 有道云笔记 的笔记
  4. java项目中使用hutool工具箱
  5. 考研计算机874数据结构知识整理 Apare_xzc
  6. 直播提醒|破解 Kubernetes 应用开发困局——实时热加载和一键 Debug
  7. 求二叉树中任意两个节点的最近公共祖先节点
  8. vivo手机便签怎么复制到苹果或别的手机中?
  9. win10 的搜索无法使用,搜不到东西
  10. Word处理控件Aspose.Words功能演示:在 C# .NET 中将 Word 转换为 PDF - 完整指南