本节开始安装MCU Server。
MCU Server有两种工作模式,一种是通过GPU,一种是通过CPU,由于我用的是虚拟机,所以这里用的是CPU。
MCU Server是自带自签名证书的域名与实际域名不匹配,所以大家要生成自己的证书。
1、权限配置
1.1、/etc/security/limits.conf
* hard nproc unlimited
* soft nproc unlimited
* hard nofile 163840
* soft nofile 163840
* hard stack 1024
* soft stack 1024
1.2、/etc/pam.d/login
session required pam_limits.so
1.3、/etc/security/limits.d/xx-nproc.conf
* hard nproc unlimited
* soft nproc unlimited
1.4、/etc/sysctl.conf
fs.file-max=200000
net.core.rmem_max=16777216
net.core.wmem_max=16777216
net.core.rmem_default=16777216
net.core.wmem_default=16777216
net.ipv4.udp_mem=4096 87380 16777216
net.ipv4.tcp_rmem=4096 87380 16777216
net.ipv4.tcp_wmem=4096 65536 16777216
net.ipv4.tcp_mem=8388608 8388608 16777216
1.5、启用设置
sudo /sbin/sysctl -p
ulimit -a
2、解压文件
tar -xf CS_WebRTC_Conference_Server_MCU.v4.1.tgz
mv Release-v4.1 /neohope/webrtc/MCU-Release-v4.1
3、编译依赖库
3.1、Cisco OpenH264
cd /neohope/webrtc/MCU-Release-v4.1/video_agent
#编译并安装依赖库
install_deps.sh
#关闭支持
#uninstall_openh264.sh
#开启支持
#install_openh264.sh
3.2、ffmpeg with libfdk_aac
cd /neohope/webrtc/MCU-Release-v4.1/audio_agent
compile_ffmpeg_with_libfdkaac.sh
mv ffmpeg_libfdkaac_lib/* lib/
4、初始化服务
4.1、生成证书
#生成RSA私钥
openssl genrsa -out ryans-key.pem 2048
Generating RSA private key, 2048 bit long modulus
..........................................................+++
................................................................................
........................................+++
e is 65537 (0x10001)
#生成CSR(certificate signing request)
openssl req -new -sha256 -key ryans-key.pem -out ryans-csr.pem
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:SH
Locality Name (eg, city) [Default City]:SH
Organization Name (eg, company) [Default Company Ltd]:NEOHOPE
Organizational Unit Name (eg, section) []:RD
Common Name (eg, your name or your server's hostname) []:172.16.172.80
Email Address []:NEOHOPE@YAHOO.COM
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
#生成自签名证书
openssl x509 -req -in ryans-csr.pem -signkey ryans-key.pem -out ryans-cert.pem
Signature ok
subject=/C=CN/ST=SH/L=SH/O=NEOHOPE/OU=RD/CN=172.16.172.80/emailAddress=NEOHOPE@Y
AHOO.COM
Getting Private key
#转换为p12格式
#openssl pkcs12 -export -in ryans-cert.pem -inkey ryans-key.pem -certfile ca-cert.pem -out ryans.pfx
openssl pkcs12 -export -in ryans-cert.pem -inkey ryans-key.pem -out ryans.pfx
Enter Export Password:
Verifying - Enter Export Password:
4.2、安装证书
cp ryans.pfx ../MCU-Release-v4.1/extras/basic_example/cert/certificate.pfx
cp ryans.pfx ../MCU-Release-v4.1/portal/cert/certificate.pfx
#cp ryans.pfx ../MCU-Release-v4.1/webrtc_agent/cert/certificate.pfx
cp ryans.pfx ../MCU-Release-v4.1/management_console/cert/certificate.pfx
#然后分别到basic_example、portal、management_console下面,执行
node initcert.js
5、初始化服务
#非GPU加速
bin/init-all.sh
#GPU加速
#bin/init-all.sh --hardware
6、开启服务
bin/start-all.sh
starting nuve, stdout -> /home/neohope/webrtc/MCU-Release-v4.1/logs/woogeen-nuve.stdout
starting cluster-manager, stdout -> /home/neohope/webrtc/MCU-Release-v4.1/logs/woogeen-cluster-manager.stdout
starting audio-agent, stdout -> /home/neohope/webrtc/MCU-Release-v4.1/logs/woogeen-audio-agent.stdout
starting conference-agent, stdout -> /home/neohope/webrtc/MCU-Release-v4.1/logs/woogeen-conference-agent.stdout
2018-10-11 00:24:30.336 - INFO: AmqpClient - Connecting to rabbitMQ server OK, hostPort: { host: 'localhost', port: 5672 }
2018-10-11 00:24:30.366 - INFO: ErizoAgent - conference agent join cluster ok.
2018-10-11 00:24:30.415 - INFO: ClusterWorker - Join cluster woogeen-cluster OK.
2018-10-11 00:24:30.429 - INFO: ErizoAgent - as rpc server ok.
2018-10-11 00:24:30.431 - INFO: ErizoAgent - as monitoring target ok.
starting recording-agent, stdout -> /home/neohope/webrtc/MCU-Release-v4.1/logs/woogeen-recording-agent.stdout
2018-10-11 00:24:32.547 - INFO: AmqpClient - Connecting to rabbitMQ server OK, hostPort: { host: 'localhost', port: 5672 }
starting sip-agent, stdout -> /home/neohope/webrtc/MCU-Release-v4.1/logs/woogeen-sip-agent.stdout
2018-10-11 00:24:33.886 - INFO: AmqpClient - Connecting to rabbitMQ server OK, hostPort: { host: 'localhost', port: 5672 }
2018-10-11 00:24:33.914 - INFO: ErizoAgent - sip agent join cluster ok.
2018-10-11 00:24:33.961 - INFO: ClusterWorker - Join cluster woogeen-cluster OK.
2018-10-11 00:24:33.970 - INFO: ErizoAgent - as rpc server ok.
2018-10-11 00:24:33.973 - INFO: ErizoAgent - as monitoring target ok.
starting streaming-agent, stdout -> /home/neohope/webrtc/MCU-Release-v4.1/logs/woogeen-streaming-agent.stdout
2018-10-11 00:24:35.160 - INFO: AmqpClient - Connecting to rabbitMQ server OK, hostPort: { host: 'localhost', port: 5672 }
2018-10-11 00:24:35.187 - INFO: ErizoAgent - streaming agent join cluster ok.
2018-10-11 00:24:35.235 - INFO: ClusterWorker - Join cluster woogeen-cluster OK.
2018-10-11 00:24:35.246 - INFO: ErizoAgent - as rpc server ok.
2018-10-11 00:24:35.262 - INFO: ErizoAgent - as monitoring target ok.
starting video-agent, stdout -> /home/neohope/webrtc/MCU-Release-v4.1/logs/woogeen-video-agent.stdout
2018-10-11 00:24:36.529 - INFO: AmqpClient - Connecting to rabbitMQ server OK, hostPort: { host: 'localhost', port: 5672 }
2018-10-11 00:24:36.563 - INFO: ErizoAgent - video agent join cluster ok.
2018-10-11 00:24:36.603 - INFO: ClusterWorker - Join cluster woogeen-cluster OK.
2018-10-11 00:24:36.616 - INFO: ErizoAgent - as rpc server ok.
2018-10-11 00:24:36.631 - INFO: ErizoAgent - as monitoring target ok.
starting webrtc-agent, stdout -> /home/neohope/webrtc/MCU-Release-v4.1/logs/woogeen-webrtc-agent.stdout
2018-10-11 00:24:37.938 - INFO: AmqpClient - Connecting to rabbitMQ server OK, hostPort: { host: 'localhost', port: 5672 }
2018-10-11 00:24:37.964 - INFO: ErizoAgent - webrtc agent join cluster ok.
2018-10-11 00:24:37.999 - INFO: ClusterWorker - Join cluster woogeen-cluster OK.
2018-10-11 00:24:38.020 - INFO: ErizoAgent - as rpc server ok.
2018-10-11 00:24:38.024 - INFO: ErizoAgent - as monitoring target ok.
starting management-console, stdout -> /home/neohope/webrtc/MCU-Release-v4.1/logs/woogeen-management-console.stdout
Start management-console HTTP server
starting portal, stdout -> /home/neohope/webrtc/MCU-Release-v4.1/logs/woogeen-portal.stdout
2018-10-11 00:24:40.691 - INFO: AmqpClient - Connecting to rabbitMQ server OK, hostPort: { host: 'localhost', port: 5672 }
2018-10-11 00:24:40.715 - INFO: Main - portal initializing as rpc client ok
2018-10-11 00:24:40.733 - INFO: Main - portal join cluster ok, with rpcID: portal-089f86b5d0a4c156d6b5@172.16.172.80
2018-10-11 00:24:40.734 - INFO: ClusterWorker - Join cluster woogeen-cluster OK.
2018-10-11 00:24:40.741 - INFO: Main - portal initializing as rpc server ok
2018-10-11 00:24:40.748 - INFO: Main - portal-089f86b5d0a4c156d6b5@172.16.172.80 as monitor ready
starting sip-portal, stdout -> /home/neohope/webrtc/MCU-Release-v4.1/logs/woogeen-sip-portal.stdout
starting app, stdout -> /home/neohope/webrtc/MCU-Release-v4.1/logs/woogeen-app.stdout
7、测试服务,访问地址
7.1、你可以用浏览器浏览这个页面,可以看到自己的输入和输出视频画面
https://172.16.172.80:3004/
7.2、你可以用多个浏览器浏览这个页面,可以看到多路视频被合并为一个视频画面了。
https://172.16.172.80:3004/
7.3、如果不想合并多路视频,而是直接获取单个视频,可以用这个链接
https://172.16.172.80:3004/?forward=true
7.4、你可以用这个URL加入某个视频会议的房间
https://172.16.172.80:3004/?room=root_id
房间ID,在启动时,会输出到命令行及日志。
7.5、可以进入管理页面
https://172.16.172.80:3300/console/
需要输入Service_ID及Service_KEY。
可以在MCU-Release-v4.1/extras/basic_example/samplertcservice.js,查找这行代码即可得到:
icsREST.API.init('_service_ID_', '_service_KEY_', 'http://localhost:3000/', true);
8、停止服务
bin/stop-all.sh
stopping nuve
stopping cluster-manager
stopping audio-agent
stopping conference-agent
stopping recording-agent
stopping sip-agent
stopping streaming-agent
stopping video-agent
stopping webrtc-agent
stopping management-console
stopping portal.
stopping sip-portal
stopping app