Linphone的使用说明

一、摘要:

Linphone是基于WEBIP电话工具,可以运行于 LinuxWindows下。通过 Linphone可以在互联网上和其他人进行声音、视频通信。 Linphone是遵从SIP协议开发的,它需要和支持SIP协议的设备或者代理服务器进行相互操作。

二、准备工作:

1、DVR联网:
两种方式:
T3DVR连接AI-BOX->T-BOX通过网络转发连接外网。
T3DVR直接接PC,利用PC的网络出外网(桥接)。
2、下载客户端
下载地址:http://www.linphone.org/technical-corner/linphone?qt-technical_corner=2
在这里插入图片描述

如上图所示SIP地址为:sip:[email protected]:5060

3、注册自己的账号

T3-DVRlinphone客户端需要账号:
账号注册地址为:https://www.linphone.org/freesip/home
在这里插入图片描述

在这里插入图片描述
这里我注册的账号为:
SIP地址为: sip:[email protected]
Username: yang-123
Domain/Proxy: sip.linphone.org
密码: 123

4、DVR设置账号:

DVR启动后,通过TCP方式设置SIP账号信息:

命令为:CMD_SET_SIP_INFO:sip.linphone.org,yang-123,123

三、linphone 操作:

1、创建linphone后台进程
linphonecsh init
这一操作开机执行在/etc/profile文件中:
cat /etc/linphonerc > /tmp/linphonerc & /usr/local/bin/linphonecsh init

2、创建linphone后台进程
linphonecsh exit

3、拨号
linphonecsh dial <sip uri or number>
比如:linphone dial sip:[email protected]

4、挂断
linphonecsh generic terminate

5、注册到服务器(账号登陆)
因为我们使用的是sip.linphone.org服务器,此需要联网
linphonecsh register --host sip.linphone.org --username yang-123 --password 123
这一步跟CMD_SET_SIP_INFO:sip.linphone.org,yang-123,123命令一个作用

6、获取注册状态(登陆状态)
用于获取是否注册成功的信息
linphonecsh status register

7、接通电话
linphonecsh generic answer

通讯录:
在这里插入图片描述
8、添加一个好友
linphonecsh generic 'friend add <name> <addr>'
例:linphonecsh generic 'friend add yang sip:[email protected]:5060'

9、查看好友列表
linphonecsh generic 'friend list'
在这里插入图片描述

10、给好友打打电话
linphonecsh generic 'friend call <index>'
例:linphonecsh generic 'friend call yang'
在这里插入图片描述

11、删除好友
linphonecsh generic 'friend delete <index>'

12、查看历史记录
linphonecsh generic 'call-logs'
可以看出刚才我打电话的记录。
在这里插入图片描述

13、静音配置 打开静音
linphonecsh generic mute

14、静音配置 取消静音
linphonecsh generic unmute

四、Linphone中相关api介绍:

Coreapi:
源码目录:t3_dvr/external/linphone/linphone/coreapi/
该通过这些API接口,可以快速构建基于sip的可视化电话系统。

(1)Callback模块:
文件:callbacks.c
该模块下的回调函数都是用于 sal模块调用的。当 sal处理完 sip协议的处理后,就会调用相应 的 callback函数继续后续的处理,包括启动一个音视频传输流,启动响铃等。也就是说这里的 callback 完成了media媒体层的处理以及 linphone上层的处理。

(2)Address 模块:
文件:address.c
调用 sal提供的接口,进行与地址相关的处理, 这里的地址主要是 uri相关的处理。包括获取地 址以及地址中的部分信息或者设置这些信息。在上层地址是一个字符串指针,但是在内部处理时都 会强制转换为 osip_from结构体来处理。实际上就是对linphone_address结构体的处理。

(3)authentication模块:
文件:authentication.c
处理认证信息。 各个认证用户的信息都被保存到 linphone_auto结构体中兵串接在 linphone_core 结构体上。这里的接口就是处理这些数据结构,提供设置和获取相关信息的接口。

(4)Chat 模块:
文件:chat.c
提供创建和销毁 chat room,向 chat room发送消息和从 chat room接收消息的接口,以及设置和 获取用户数据的接口。 类似于 authorization模块,所有的 chat room信息也是保存在linphone_chat结 构体中并串接在 linphone_core结构体上的。

(5)Friends模块:
文件:friend.c
提供处理 friends相关信息的接口。所有的 friends信息保存在linphone_friend结构体中并被串接 在 linphone_core结构体上,这样操作起来,包括设置,获取,添加以及移除都很方便。

(6)Offeranswer模块:
文件:offeranswer.c
管理基于 sdp的媒体协商。根据本地的支持能力和远端支持的能力,根据就低的原则,获得双方都 可以支持的媒体信息。比如编解码格式等。

(7)presence模块:
文件:Presence.c
提供与在线状态相关的处理。

五、Linphone中参数解析:

T3-DVR 中: /etc/linphonerc
[sip]
sip协议相关参数
在这里插入图片描述

[net]
在这里插入图片描述

[net_policy_0]
net使用ref参数传递
在这里插入图片描述

[misc]
唯一的机器生成的标识
在这里插入图片描述

[video]
是否显示、是否录像等标志位
在这里插入图片描述

[rtp]
rtp音频端口、视频端口等信息:
在这里插入图片描述

[sound]
铃声文件目录、音频频率等、
在这里插入图片描述

六、 Linphone中通信过程分析:

实验:两个电脑下载linphone进行通话,Wireshark进行抓包分析通信过程。
Linphone 地址为:
A: sip:[email protected]:5060
B: sip:[email protected]:5060

操作:
AB打电话进行实验:

Wireshark置过滤信息:
(ip.src == 172.17.218.139)||(ip.src == 172.17.218.66)
在这里插入图片描述

过程:
SIPSession Initiation Protocol,会话初始协议)是一个控制发起、修改和终结交互式多媒体(音视频、聊天、游戏等)会话的信令协议
1、主叫方发给被叫方的INVITE请求
在这里插入图片描述

2、BA发送呼叫处理中的应答信号。
在这里插入图片描述

3、BA发送 我正在震铃中,请稍等。
在这里插入图片描述

4、BA发送 接通了。
在这里插入图片描述

5、AB发送应答。
在这里插入图片描述

6、AB互相通过RTPReal-time Transport Protocol实时传输协议)发送音频或视频数据。
在这里插入图片描述

7、A要挂断了
在这里插入图片描述

8、关闭UDP服务
在这里插入图片描述

9、B知道A挂断了,相应ACK
在这里插入图片描述

发布了247 篇原创文章 · 获赞 93 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/qq_33487044/article/details/104080018