之前公司要做自主研发的多人会议,搞了很久.记录一些东西在这里,因为涉及到的东西有点多,网上教程很多,这里只做一些记录,就不写详细的过程了.
之前自主研发了一套IM,用webrtc做了点对点的视频通话,然后客户觉得很简单,多人视频会议就直接多几个画面而已,然后就入坑了.
后台用的nodejs配合forever,就是那个大家都在用的.访问http://localhost:3000#roomName查看效果,其中roomName为进入的房间名,不同房间的用户无法互相通信,这里不再赘述.
iOS编译修改demo的过程很顺利.
网页端由于需要SSL验证,我们公司连测试的SSL证书和服务器都没提供,我就自己搭建了一个虚拟机,然后用我自己的域名,申请了一个阿里云的免费SSL证书.
如果网页端想要绕过SSL协议,通过3000端口访问页面使用摄像头,需要使用火狐浏览器46版本以下方可做到.
如图
关于webrtc的多人视频会议的杂乱记录
我用的浏览器是
关于webrtc的多人视频会议的杂乱记录

之后就是安卓,需要验证SSL协议,我就去虚拟机上弄nginx来配置SSL协议,之后由于自己的失误耽误了一天半时间,由于nginx在1.9.0以上版本才支持TCP,所以你安装的nginx版本一定要在1.9.0以上,我最开始为了省事,随便找了个低版本的装上去了,结果怎样都连不上,大家引以为戒,我把nginx的安装配置过程写在下面吧.

1.最重要的一点,我在这里卡了一天半,最开始用的低版本的nginx,nginx从1.9.0版本开始支持TCP,所以版本一定要大于等于这个。

2.安装nginx依赖的程序

yum install gcc;
yum install pcre-devel;
yum install zlib zlib-devel;
yum install openssl openssl-devel;

3.下载nginx

wget http://nginx.org/download/nginx-1.12.2.tar.gz

4.解压nginx

tar -zxvf nginx-1.12.2.tar.gz

5.cd nginx-1.12.2/

cd nginx-1.12.2/

6…/configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

7.make && make install

make && make install

8.cd /usr/local/nginx/sbin

cd /usr/local/nginx/sbin

9…/nginx

./nginx

10.访问IP地址如图,成功

关于webrtc的多人视频会议的杂乱记录

11.cd /usr/local/nginx/conf/

cd /usr/local/nginx/conf/

12.mkdir cert

mkdir cert

13.cd cert

cd cert

14.把SSL证书扔进去,如图

关于webrtc的多人视频会议的杂乱记录

15.cd …/

cd ../

16.vim nginx.conf

vim nginx.conf

17.配置文件修改如下


worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

 upstream web {
    server 0.0.0.0:3000;      
        }
 
 upstream websocket {
    server 0.0.0.0:3000;   
        }
        
 server { 
    listen       443; 
    server_name  localhost;
    ssl          on;
    ssl_certificate     cert/cert.crt;
    ssl_certificate_key  cert/cert.key;
    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  50m;
	ssl_protocols TLSv1 TLSv1.1 TLSv1.2 SSLv2 SSLv3;
    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;
     
    location /wss {
	proxy_pass http://websocket/; 
	proxy_read_timeout 60s;
	proxy_set_header Host $host;
	proxy_set_header X-Real_IP $remote_addr;
	proxy_set_header X-Forwarded-for $remote_addr;
	proxy_set_header Upgrade $http_upgrade;
	proxy_set_header Connection 'Upgrade';	
    }
    
    location / {
	proxy_pass         http://web/;
	proxy_set_header   Host             $host;
	proxy_set_header   X-Real-IP        $remote_addr;
	proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    }
  }

}

18.cd …/sbin/

cd ../sbin/

19…/nginx -s reload

./nginx -s reload

这样nginx就配置好了.

最后来个合集
首先安卓
关于webrtc的多人视频会议的杂乱记录

然后iOS
关于webrtc的多人视频会议的杂乱记录

最后网页端
关于webrtc的多人视频会议的杂乱记录

以上就是webrtc多人视频会议的一些杂乱记录了.

相关文章: