老司机引言:之前做过一款即时通讯的App,里面用到语音通话的模块,老司机看了各大开源的语音通
话和视频通话,最终敲定使用Linphone。别问我为什么用这个,当时WebRTC还不是特别火,所以没
有怎么关注。闲来无事,将我的研究成果写下来,也算是巩固了。
1.linphone开源项目的编译和移植
1.1 准备环境
地址:https://github.com/BelledonneCommunications/linphone-android
这里下载源码要使用git,如果直接下压缩包的话还需要将子模块的内容下下来,不要问我子模块是啥,
所以这里使用到的git命令是
git clone git@github.com:BelledonneCommunications/linphone-android.git --recursive
当然你要是下了压缩包的话,或者上面过程中下载子模块失败的话,也可以使用下面这个命令单独下载子模块
cd到项目主目录
git submodule update --init --recursive
因为需要编译源码所以需要linux环境,mac本的也是差不多的,这里老司机用的是ubuntu系统,之前也用过centOS的系统编过,虽然最终也成功了,但是个中曲折也只有自己知道,好吧,下面简单说说过程
人家github上写的很详细啊
ubuntu的系统基本上只需要安装一下sdk,ndk 还有cmake升级一下,这里略过,请自行查询方式方法。
1.2 开始编译
安装完了之后呢,cd到项目目录,使用python命令自动makefile文件
python prepare.py {可选arm armv7 arm64 x86 x86_64,或者不填}
看得懂python的这里也略过,自己去prepare.py里看。就说一下脚本里常用的
python prepare.py -clean clean一下项目删除之前生成的文件
python prepare.py -build build一下java项目
上面的makefile文件生成之后,直接make一下就等着就行了
make
这里是生成之后的目录
我擦,我居然贴了一个android studio的工程目录图片,太不专业了
基本上到这就完成的linphone的编译工作,当然你如果觉得这么多so包好麻烦,你就使用linphone-sdk中静态库自己再编译称一个so包就好了,我当时也想这么做,奈何项目比较急,作罢作罢
1.3 开始移植
咱先看看都有哪些需要移植,linphone人家是多平台开发,就是吊
- 需要上面的.so文件
- 需要子模块linphone下的java文件,子模块mediastreamer2中的java文件
拷完之后就长这样,两年前也长这样
下节开始写服务器端的搭建
移植Android端源码:https://github.com/ddssingsong/VoipLibrary
如需要详细语音通话和视频通话,请入群:601332720