100ask_imx6ull使用linphonec实现局域网内与手机通话
之前老师要我看一下如何实现VOIP的方案,网上看到一篇文章用s3c2440移植linphone实现通话,也参考了别人移植linphone需要这些库,
本来打算在看完ALSA声卡部分在JZ2440上面移植一下,刚好最近刚入手100ask_imx6ull韦老师的新板子,在buildroot make menuconfig网络包配置里面看到有linphone,想着上面alsa声卡什么都配置好了,就先来实验一下能不能用,结果还真能手机拨通开发板,虽然音质不太好,也能听清一些,不知道是芯片性能原因,还是采样率不一样,还是记录一下实现过程!
首先我们肯定一个sip服务器来注册我们的终端,以及安卓手机啦。
用到的软件及下载地址:
1.Linphone客户端(安卓及windows):http://www.linphone.org/technical-corner/linphone?qt-technical_corner=2#qt-technical_corner
2.服务器:miniSIPServer,下载地址:https://www.myvoipapp.com/index.html
一、搭建服务器
1.安装软件miniSIPServer,下载地址:https://www.myvoipapp.com/index.html
2.安装好后设置我们服务器的IP地址,因为是在windows上安装的首选地址也就是我们电脑的IP
3.电脑里本身有MySQL顺带把密码输进去了
如果你的电脑没有可以装一个哦
4.这里不知道干嘛的,顺带改一下
5.进入分机,我们要在我们的服务器上**注册我们的用户**
6.增加用户1000也就是我的第一部手机
对应的IP就是我们手机的IP啦,当然前提在一个局域网下
我们先设置一下把,分机名为1000,密码123456,底下的IP地址为我们手机连接同一个局域网里面的手机的IP地址,端口号5060
7.同理我们的第二部手机,配置一下。第二部手机的IP地址为192.168.1.103
8.在电脑端也装了linphone感觉版本有点太新,配置有点问题,先就实现两个手机打电话。
二、安卓手机安装Linphone软件及配置
1.点击助手新建一个SIP账号,我们这里是已经创建过了
底下高级的选项,代理那里填上服务器的IP地址192.168.1.101
也就是安装miniserver软件的电脑的IP地址
选择网络连接端口改为5060,这里默认原来是随机的。
添加一个账户,用于拨打电话
4000是我们另一部手机的用户名,IP是另一部手机的IP地址
好了,我们就可以拨打电话啦,测试结果还是很流畅哒!
三、100ask_imx6ull移植linphone
使用100ask-sdk包里面的Buildroot
使用make 100ask_imx6ull_defconfig
然后make menuconfig 把Targer packge 里面
alsa声卡肯定要选上
然后linphone也选上
退出后make即可,
然后把/100ask_imx6ullsdk/Buildroot_2019.02/output/images目录下的emmc.img镜像下载到板子上即可。
四、启动板子
下载好emmc.img后
进入开发板
这里有一些linphonec 命令可以参考:
启动
1. linphonec -d [0|6] 日志等级:linphone -d 0不输出日志,linphone -d 6输出所有信息
2. linphonec -C 使能摄像头,但不将图像显示到LCD上
3. linphonec -D 使能LCD显示
4. linphonec -V 使能LCD显示和摄像头功能,类似于linphone -C -D的组合
5. linphonec -s root@192.168.1.110在启动linphone后,拨打后面的sip地址电话
6. linphonec -a 启动linphone后自动接听来电
如:linphonec -V -d 6 使能视频模式,并输出所有调试信息
linphonec -V -s root@192.168.1.110 启动linphone并拨打对应的sip地址电话
控制
控制是在启动linphone后的操作
1. 注册:其中name和password为对应的户名和密码
register sip:name@sip.linphone.org sip:sip.linphone.org password
2. 呼叫
call root@sip.linphone.org 呼叫广域网 或者 call @192.168.1.110 呼叫局域网
3. 退出程序:quit
4. terminate 终止当前对话
terminate <call id> 终止对应id对话
terminate all 终止所有对话
5. answer 接听当前默认的等待电话
answer <call id>接听指定id号的来电
6. help advanced 更多帮助
7. snapshot /home/pic.jpeg 截屏
执行linphonec
首先注册了一下感觉有点问题,服务器上没有亮
换了个输入格式还是有问题,就没鼓捣了,总是返回注册失败
直接实验看能不能打电话把:
按照上面的命令,拨通我们一部手机
手机上配置的是用户名2000 手机的IP地址是192.168.1.100,可以拨通,我们在板子上接上耳机,通过耳机的麦克可以实现通话啦,但是音质没有想想的那么好。
手机再回拨root
可以看见我们的手机端正在请求链接我,
通过耳机可以听见铃声。
板子上输入answer,可以正常接通打电话啦。
如果想要实现不同网络之前通话,你也可以在云服务器上安装asterisk搭建一个sip服务器,注册自己的用户。