基于router模式的会议实现

一.需求
  1. 注册。
  2. 点对点音视频。
  3. 即时消息(只支持文本)。
  4. 会议人数不超过8个。
  5. 移动客户端包括windows,android以及ios。
  6. Web客户端包括火狐(VP8,H264),以及google浏览器(VP8)。
  7. 要求每个客户端可以看到所有成员的视频。
  8. 邀请,踢出成员。
  9. 成员可以调低,调高本端的输入、输出音量。
  10. 会议控制
      1) 设定会议的密码,修改会议密码。
      2) 锁定会议,不允许其他人加入。
      3) 调整成员的输入及输出音量,将成员静音或者禁言。
      4) 向会场播放音乐。
      5) 关闭某个成员的视频输入。
      6) 会议录音。
  11. 会议状态呈现
      1) 显示会议中所有成员。
      2) 显示具体成员的状态,包括被禁言,静音,音量大小,以及是否有摄像头
      3) 显示会议过程中,成员加入,退出。
  12. 支持所有的音频编解码。
  13. 支持H264以及VP8视频编解码。
  14. 要对单个视频流可操作。
  15. 网络环境都是局域网,不需要连接互联网。



二.方案
  1. 技术选型:
  实现会议有三种方案,
      1)Mesh结构
      2)Mixer结构
      3)Router结构
      每种方案都有各自的优缺点和适用场景,根据上述需求,都是内网通信,且要对单个视频流可做处理,选择Router结构是比较好的方案,但是鉴于    目前的技术选型,选择适用Router和Mixer结构混合的方案,音频流走Mixter,视频流走Router,这样音频会话就会比较同步,也好在服务器统一      控制,视频流服务器只进行转发,不进行编解码,这样占用cpu资源也不多,只是带宽会比较大,后期考虑不同的视频流采用不同的分辨率去减少带    宽,比如会场主画面用1080P的,其他次画面都用cif的。

  2. 方案设计:
      1)媒体流设计
      每个客户端都发送一个音频流,经过服务器进行混音,再通过音频通道返回;每个客户端都发送一个视频流,由服务器对视频流进行转发,比如最    大支持n个客户端的会议,每个客户端需要发送n-1个视频通道,其中一个是双向通道,其他的是只收通道,客户端采用我自己实现的    pjsip+webrtc,支持多通道音视频。
基于router模式的会议实现_第1张图片

      2) 信令流程设计
         客户端发往服务器:
   v=0
   o=- 3658818302 3658818302 IN IP4 192.168.6.121
   s=111111
   t=0 0
   m=audio 4000 RTP/AVP 103 0 8 106
   c=IN IP4 192.168.6.121
   a=sendrecv
   a=rtpmap:103 ISAC/16000
   a=rtpmap:0 PCMU/8000
   a=rtpmap:8 PCMA/8000
   a=rtpmap:106 telephone-event/8000
   m=video 4002 RTP/AVP 100 105
   c=IN IP4 192.168.6.121
   a= sendrecv
   a=rtpmap:100 VP8/90000
   a=rtpmap:105 H264/90000
   m=video 4004 RTP/AVP 100 105
   c=IN IP4 192.168.6.121
   a= recvonly
   a=rtpmap:100 VP8/90000
   a=rtpmap:105 H264/90000
   m=video 4006 RTP/AVP 100 105 
   c=IN IP4 192.168.6.121
   a= recvonly
   a=rtpmap:100 VP8/90000
   a=rtpmap:105 H264/90000

      服务器发往客户端:
   v=0
   o=- 3658818302 3658818302 IN IP4 192.168.6.198
   s=111111
   t=0 0
   m=audio 5000 RTP/AVP 0 106
   c=IN IP4 192.168.6.198
   a=sendrecv
   a=rtpmap:0 PCMU/8000
   a=rtpmap:106 telephone-event/8000
   m=video 5002 RTP/AVP 100
   c=IN IP4 192.168.6. 198
   a= sendrecv
   a=rtpmap:100 VP8/90000
   m=video 5004 RTP/AVP 100
   c=IN IP4 192.168.6. 198
   a= sendonly
   a=rtpmap:100 VP8/90000
   m=video 5006 RTP/AVP 100
   c=IN IP4 192.168.6. 198
   a= sendonly
   a=rtpmap:100 VP8/90000


你可能感兴趣的:(voip,SIP,视频会议router)