基于freeswitch+linphone客户端开发对讲系统
基本思路:
freeswitch开启conference call (3100), 并进行一些配置(例如,没有moh,刚刚进入时静音禁止视频等),linphone客户端界面改造:启动后自动拨号3100进入fs会议,当按下客户端的‘对讲’按钮后,客户端通过dtmf info发送命令给fs, fs收到dtmf命令后会激发相应的dtmf事件,一个专门的esl客户端监听此类事件,解析这个dtmf事件来获得收到的键值,得知客户端想要对讲,则调用fs的会议控制命令来打开这个会议成员的讲话权限,客户端的声音就可以传入会议中,会议里的所有与会者(客户端)都通过这样的逻辑来控制和协调,保证每次只能有一个客户端讲话(非混音模式),在一个客户端讲话期间,前10秒内其他客户端不能抢,超过10秒,其他客户端可以抢过话权即打断正在讲话的客户端,以及与会者的在线状态广播
功能特点:
集群对讲
点对点对讲
支持普通耳机、蓝牙耳机、外放、ptt切换
10秒超时抢话
多群组,每个群组之间不通话
领导模式:设定为领导,可以对多个群组进行广播
用户在线列表管理
...
1.linphone客户端改造:
采用linphone-android ver3.9.1,主要改动包括:
去掉linphone原有的联系人好友关联功能(会影响到相关activity的自动化转换)
好友在线状态订阅功能去掉--当时在客户端在线状态管理上纠结了一番,采用linphone的presence publish&subscribe