http://www.wildcreek.me/2017/11/21/Intel%20WebRTC%20Collaboration%20Suite%20%E6%9C%8D%E5%8A%A1%E7%AB%AF%E9%83%A8%E7%BD%B2%E5%8F%8A%E5%AE%A2%E6%88%B7%E7%AB%AF%E9%85%8D%E7%BD%AE%E8%AF%B4%E6%98%8E/
部署环境: Centos 6.4
部署版本:CS_WebRTC_Conference_Server_Peer.v3.5.tgz客户端版本:CS_WebRTC_Client_SDK_Android.v3.5.zip
Intel WebRTC SDK 包含平台侧 MCU、P2P、Gateway和 客户端SDK(支持Android、iOS、JavaScriptWindows),详细的介绍可以参考 官网。
为调研Intel开放的WebRTC方案的效果,按照文档部署了peer server 和 mcu server,这里使用的是3.5版本,该版本已经剔除了gateway sdk ,需要调研sip网关的可能需要参考之前的版本(如2.8.1和3.0版本)。客户端部署的是Android Sample,支持视屏通话,屏幕分享,文字聊天等功能,具备硬编解、Qos,预留了流处理和图像滤镜接口。
部署配置STUN Server
- 使用开放stun 服务器:http://www.cnblogs.com/idignew/p/7341479.html
- 开源部署coturn :https://github.com/coturn/coturn
编译安装Peer Server
- 安装nodejs npm ,安装n模块,切换node至合适版本
解压安装peer server
tar –zxvf CS_WebRTC_Conference_Server_Peer.v3.5.tgzcd PeerServer-Release-3.5npm installpeer server配置证书
- 启动:node peerserver.js
- 停止:kill
编译安装MCU Server
- 安装nodejs npm ,安装n模块,切换node至合适版本
- 升级openssl-1.1.0g
- 编译安装libevent-2.0.21-stable
- 编译安装glibc-2.14 ,解决libc.so.6: version `GLIBC_2.14’ not found问题,参见http://blog.csdn.net/cpplang/article/details/8462768/
- 启动mongodb :service mongod start
- 安装intel mcu sdk 【配置选择:软编码,非集群】
6.1 安装 Cisco OpenH264* Library
6.2 编译安装 ffmpeg with libfdk_aac
6.3 非GPU加速安装:cd /root/intel-webrtc/MCUServer-Release-v3.5 bin/init-all.sh
6.4 启动和停止:
//启动
cd /root/intel-webrtc/MCUServer-Release-v3.5
bin/start-all.sh
//停止
bin/stop-all.sh
6.5 验证安装:打开 http://x.x.x.x:3004
6.6 修改配置文件,配置公网访问
- MCU管理控制台 MCU Management Console 操作说明
7.1 访问验证 http://x.x.x.x:3000/console/ - MCU Sample Server 安装运行
8.1 切换到目录/root/intel-webrtc/MCUServer-Release-v3.5/extras/basic_example
8.2 安装配置:按照 README.md 说明进行配置 node basicServer.js
8.3 访问验证: http://x.x.x.x:3001 https://x.x.x.x:3004 - Simple RTMP Server安装运行
项目地址:https://github.com/ossrs/srs
启动 ./etc/init.d/srs start
停止 ./etc/init.d/srs stop
重启 ./etc/init.d/srs restart
问题1 : MCU 占用过大磁盘空间,audio_agent video_agent webrtc_agent recording_agent sip_agent 等目录产生很多core 文件,参见 https://www.cnblogs.com/dongzhiquan/archive/2012/01/20/2328355.html
查看命令: du -ah –max-depth=1 a表示显示目录下所有的文件和文件夹(不含子目录),h表示以人类能看懂的方式,max-depth表示目录的深度。
原因:在一个程序崩溃时,它一般会在指定目录下生成一个core文件。core文件仅仅是一个内存映象(同时加上调试信息)
解决方法:关闭core文件的生成 ulimit -c 0
问题2:node basicServer.js 3001端口占用
查看端口占用进程: netstat -anp|grep 3001
查看进程信息: ps -aux | grep 4994
结束进程 kill pid 4994
Android Sample配置说明
- 更新 sample 依赖:
1.1 替换 以下位置jar包和so为CS_WebRTC_Client_SDK_Android.v3.5\libs 目录下同名文件。
sample\conferenceSample\libs
sample\conferenceSample\libs\src\main\jniLibs
sample\p2pSample\libs
samples\src\sample\p2pSample\src\main\jniLibs
sample\utils\libs
samples\src\sample\utils\src\main\jniLibs - 配置 ICE 服务器:修改SampleActivity下 stunAddr 、turnAddrUDP、turnAddrTCP等变量为可用的 ICE server配置。
- 修改signaling server:在Setting 界面填入合适的信令服务器地址,如上如配置正确的Peer Server。
效果预览
参考资料:
Intel SDK首页: https://software.intel.com/en-us/webrtc-sdk
Server安装指南:https://software.intel.com/en-us/documentation/webrtc-conference-server-guide