Android基于OpenSL ES,Speex,RTMP的Voip客户端实现

之前有个基于java和jni共同实现的版本,juv需要授权,语音数据在java层和jni层不停互转。

这个版本,完全在jni层实现,java只处理方法调用和事件回调。

OpenSL ES,从API 9开始支持的技术,通过这个标准,Android已经完全可以在native层采集和播放音频。

libspeex,同上一个项目一样。

librtmp,著名的rtmpdump项目所开发的rtmp库。

项目地址:https://github.com/illuspas/SayHi
完成度:采集编码上传完成,下载解码播放待实现(最近太忙了)
剩下的也不多,欢迎pull Requests 😀

—————————-7月20日分割线————————————

简单的实现了播放流程。

注:本例及iOS版SayHey皆为采集播放、编解码、传输功能库及演示程序。完整的voip还应该包括用户系统,回话管理,消息收发等,这都不在本例研究范畴。
商业版流媒体服务端可以选择fms,wowza,evostreamer
开源版:red5nginx-rtmp-modulesrs
用户与回话管理可以搭配OpenFire(XMPP协议)实现。
使用Node.js+Socket.io也是不错的选择,目前撸主有个项目就是使用这套方案,扩展性,定制性都非常强。跨平台支持优势尤其体现在web上都完全超越openfire。

原创文章,转载请注明: 转载自贝壳博客

本文链接地址: Android基于OpenSL ES,Speex,RTMP的Voip客户端实现

10 评论

  1. 大哥,最近在学习这个,但是一直有不懂得地方,我可以加上你请教一下吗?

  2. red5这个做聊天服务器可以保证可靠性吗? 这方便的经验少,想开发个支持语音聊天的android和服务端,希望能从入门简单的开始,用xmpp还是red5好些?

  3. 紧急求助一下,全双工语音通信中,声学回声你是怎么处理的?我现在卡在AEC上。视频解码,语音编码解码,语音采集播放都已经搞定。就差回声消除和音视频同步了。

      1. 我现在从github上找了一套扣好的apm,但是用的时候报错,能不能指点下怎么用apm?

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据