Code Bye

大牛请进,Android音视频聊天各种实现方式问题

      最近项目需要,要完成一款局域网通信软件,主要实现Android端的文字、语音、视频聊天功能,并且实现服务器,服务器端能实现客户端上下线监控以及资源推送等简单功能,但是服务器端现在还没人做,想找找有没有现成的,减少工作量。 
      这两天查了一些资料看主流的实现方式有以下几种:
      1.  xmpp+openfire方式,客户端调用asmack类库,这种方式比较成熟,尤其服务器端已有比较完整的demo,但是 所有的相关资料都是文字聊天,没有音视频,又有的说xmpp视频传输支持的不好,openfire冗余大的问题。
      2、tcp通信,通过调用Android提供的相关tcp,udp网络传输api实现,这种实现方式也很普遍,但就是得从最开始实现。
      3、jingle:据说gtalk就是在方案一的基础上用jingle实现了视频聊天,不过资料特别少。
      4、jitsi,貌似是xmpp+sip, 这个git上有比较完整的源程序,但是感觉好复杂,研究透它实现可行么?
      5、sip协议,可以用于视频通信

      我初步想通过xmpp和android tcp api组合完成,xmpp实现与服务器的交互和资源推送,tcp实现音视频聊天,不知道可行么,这两种协议在一块工作可以么? 还是直接研究下jitsi的实现更靠谱一些。

      这方面知识浅薄,烦请有相关这方面研究的大神指点一二,那种实现方式比较可取!谢谢谢谢!

20分
文字聊天推送用xmpp+openfire是够了,
语音要单独弄个服务器 加密和压缩 个人觉得都要用JNI  C/C++库去处理提高性能,你可以用Apache MINA做为TCP基础框架。
像图片发送都可以用单独的服务器去处理,独立处理。

楼主的项目就相当于一个小型的微信系统了。 看你的用户需求和用户量。基本都是TCP Socket通信,
部分可用HTTP,比如用户登录注册,版本更新等。

引用 1 楼 birdsaction 的回复:

文字聊天推送用xmpp+openfire是够了,
语音要单独弄个服务器 加密和压缩 个人觉得都要用JNI  C/C++库去处理提高性能,你可以用Apache MINA做为TCP基础框架。
像图片发送都可以用单独的服务器去处理,独立处理。

楼主的项目就相当于一个小型的微信系统了。 看你的用户需求和用户量。基本都是TCP Socket通信,
部分可用HTTP,比如用户登录注册,版本更新等。

谢谢回复!我想文字聊天推送用xmpp+openfire,然后语音、视频聊天不经过服务器,客户端与客户端直接通信这种方式可行么?因为服务器也就实现个查看当前用户,资料下载、推送功能,不许要存储用户间音视频交互信息,可以不另设服务器么。类似局域网通信软件的功能。

如果语言和视频不经过 服务器 就没有离线功能了,
你用蓝牙倒是可以实现一对一的那种,如果是群发就困难了,
UDP也可以做到,技术上可以实现。
引用 3 楼 birdsaction 的回复:

如果语言和视频不经过 服务器 就没有离线功能了,
你用蓝牙倒是可以实现一对一的那种,如果是群发就困难了,
UDP也可以做到,技术上可以实现。

哦,其实实现的核心功能就是局域网内在线用户的实时通讯,类似对讲机,用户比较少,如果语音视频暂不考虑离线,用tcp/udp单独实现音视频通信应该可以吧?一对一应该比较好实现,群聊用udp技术上可以成立哈?我是觉得这种实现方式,多种协议叠加,会不会有冗余?这方法不是比较二?不知道有没有比较成熟的方法

要求不高的话用局域网用UDP是可以做到的,Android 通过UDP 抓取UDP广播包 可以传输语音字节。
引用 5 楼 birdsaction 的回复:

要求不高的话用局域网用UDP是可以做到的,Android 通过UDP 抓取UDP广播包 可以传输语音字节。

嗯,我试下整合一下,不过两个协议轨迹估计得维持两套在线用户列表。谢谢啊

楼主,你的这个功能实现了不?能发给我看看不?624793071@qq.com

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明大牛请进,Android音视频聊天各种实现方式问题