imsdroid 学习(初认识)

简介:   由于工作的需要,麦洛最近都在研究语音通话的技术。工作中,一个同事无意发现了开源项目idoubs。idoubs是imsdroid的IOS版本。   从google以及baidu来看,除了官网http://code.google.com/p/imsdroid/介绍外,有关imsdroid或idoubs貌似的帖子并不是很多。

  由于工作的需要,麦洛最近都在研究语音通话的技术。工作中,一个同事无意发现了开源项目idoubs。idoubs是imsdroid的IOS版本。

  从google以及baidu来看,除了官网http://code.google.com/p/imsdroid/介绍外,有关imsdroid或idoubs貌似的帖子并不是很多。但从官网的介绍可以知道这个项目确实非常强大。于是赶紧check下来学习。注意check out时要使用http://imsdroid.googlecode.com/svn/这个地址,不要使用trunk目录,作者已经将项目放在了svn这个目录下了。

  check下来的源码结构:

  

  imsdroid或idoubs项目是基于doubango,关于这个项目可以到它的官网http://doubango.org/上看看介绍。

  麦洛与iphone的同事试用了一下这个安装包,看一下通话效果。不知道是不是网络原因还是服务器原因,语音通话是可以的,很清晰,有一点回音,但视频却是很难连接成功,或者传播的图像只有一台手机看得到,而另一台则看不到。从源码上看,它还支持高清(1080p),以及多种编码格式。而麦洛感兴趣的正是它丰富的编码格式以及网络传输的实现技术。

  由于介绍imsdroid使用的资料实在是少之又少。学习它的原理,只能从看代码开始。

  从编译项目开始。使用2.0目录下的imsdroid,在eclipse中新建一个android项目,可以命名为imsdroid2.0,将branches下的imsdroid下的res,src下的(不包含src)目录以及manifest文件都copy到新建的imsdroid2.0项目中来。这时候编译imsdroid2.0是会出错的。因为有很多类找不到。原因是由于imsdroid项目基于android-ngn-stack这个库的,作者将其放在了branches下的android-ngn-stack,这个主要是封装了底层的实现,使用jni来调用c库。

  所以使用同样的方法,在eclipse中使用将android-ngn-stack这个库新建为android项目,并把它作为一个库。

  方法是:右击android-ngn-stack 选择 properties 在弹出的窗口中把 is library 勾选上,如:

  

  然后就在imsdroid2.0中引用这个库就行了,引用的方法也是一样的,只是在打开的properties窗口中点击add...按钮,将android-ngn-stack添加进来就行了。这时候,imsdroid2.0就可以编译成功了。

  编译成功后就可以在手机安装试用了么?no!

  这里还有一个问题,就是android-ngn-stack是封装了jni,但真正的实现是c库,所以必须有一个libxxx.so文件才行。那这个文件在哪里呢?答案看下图:

  

  将native-debug/libs目录copy到我们的imsdroid2.0项目中来,就可以了。

  最后,对于doubango这个开源项目http://code.google.com/p/doubango/ 同样的,要check out 这个项目, 只要http://doubango.googlecode.com/svn/ 就行了,trunk目录下是空的。

  麦洛也是刚开始学习这个开源项目,如果出现问题也是很正常的。可以给麦洛留言,大家一起学习。

 

  本文是原创博文,如果转载请注明来源,谢谢!

  

 

目录
相关文章
|
23天前
学习使用按位取反~
学习使用按位取反~。
14 1
|
25天前
|
机器学习/深度学习 人工智能 算法
【C/C++】C/C++编程——为什么学习 C++?
当提到C++的时候,很多人会觉得语法复杂、学习曲线陡峭,并且好像与C语言还有点"纠缠不清"。尽管如此,C++仍然是当今世界上最受欢迎和最有影响力的编程语言之一。特别是在当今快速发展的人工智能(AI)领域,尤其是在大模型技术的兴起背景下,学习C++语言对于从事相关技术研究和开发的人员来说仍然具有重要意义。
12 2
|
5月前
|
数据安全/隐私保护
实用分享-学习资料下载器
实用分享-学习资料下载器
|
5月前
|
算法 Ubuntu C语言
学习C++的意义
学习C++的意义
|
7月前
|
机器学习/深度学习 设计模式 算法
|
8月前
|
NoSQL Java jenkins
|
存储 缓存 网络协议
学习总结
学习总结
|
机器学习/深度学习 算法
一句话总结LLE(流形学习)
一句话总结LLE(流形学习)
一句话总结LLE(流形学习)
|
弹性计算 Java 关系型数据库
学习介绍
解压tomcat压缩包 tar -zxvf apache-tomcat-8.5.70.tar.gz。 解 在idea将下面打包成war,通过命令传到服务器的tomcat里面,传进去后将会自己解压 通过这次的云服务器ECS的使用,我收获颇丰,第一次将项目放到了服务器上进行访问,在过程中,因为我目前使用的springboot,所以在tomcat上面使用较少,遇到大多数问题是部署到云服务器上端口以及连接的错误和Linux指令的不熟悉,我经常通过网络找各种解决办法,配置端口,删除重新解压一下,最后才能使用,将这次的心得体会写下来,以后再次使用阿里云服务器的时候,我看看通过这个文章,可以更快的部署服务器
|
小程序 程序员 Windows
学习情况
一·自我情况,二·使用过程,三·心得体会