android webrtc 多人网状P2P视频聊天

android webrtc 多人网状P2P视频聊天,第1张

什么是网状P2P?假设3个人视频会议,每个人都要同时接收2路流,上传两路流。每个客户端要创建多个(N-1个)PeerConnection ,同时和多个人建立 P2P 连接。

多人P2P跟两人P2P通信的唯一区别就是要创建多个 PeerConnection ,也很简单。

比较复杂的地方其实是聊天室信令的设计与实现,客户端还比较简单。网状P2P服务器压力很小,服务端只有信令不涉及流的处理,客户端压力较大,因为要同时处理多路流。

默认定义一个房间

首先所有用户还是先注册自己到服务端

定义一个加入房间的信令

相应的定义一个离开房间的信令

sdp, trickle 等信令消息的转发不用动,直接根据接收者ID转发就行

3个手机依次安装3个用户,依次加入房间,很简单实现了多人P2P通信。

假设领导要你搞一个10人以内的视频会议,网状P2P其实挺合适,做一个完善一点的房间管理服务,客户端再优化完善一下,一到两周搞定。

人再多的话网状就不太适合了,就得 SFU 或 MCU 了,得架设一个 webrtc 网关了,且听下回分解。

客户端源码参考: https://github.com/lesliebeijing/WebRtcDemo 里面的VideoRoomActivity

signalserver: 参考 https://github.com/lesliebeijing/WebrtcSignalingDemo/tree/branch_videoroom

Webrtc已经成为视频及时互动的标配,日常业务系统中,很多需要web打开就能视频通话,实现类似微信视频聊天的功能,但实施是在web上,由于还有业务app集成,同时也要在app原生端实现。

经过多次分析和参考google的官方demo,开发总结了一下:

1,webrtc库尽量要匹配,如现在主流浏览器支持的是webrtc,m79,原生端尽量用这个原生库打包。

2,web的全平台兼容挺难的,特别是ios上只支持safari内置版本,api和chrome稍有差异。

3,实施上视频摄像头对chrome 64位兼容不不是太好,建议自行封装成chrome内核的客户端

4,webrtc如只是p2p不需要特别服务器,自已开发信令服务就可以啦,当要安装turn server 国内常有打洞不成功需要转发。

效果:

​​​

测试:https://m.ovmeet.com:5001/login.html


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/463197.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-06-04
下一篇2023-06-04

发表评论

登录后才能评论

评论列表(0条)

    保存