licode 环境搭建
2018年05月08日 14:56:36 twoconk 阅读数:1737
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/twoconk/article/details/80239694
1、根据安装指南安装(参考:http://licode.readthedocs.io/en/master/from_source/ 即可),如果顺利的话,应该都能正常过去,有失败可能是网络问题,所以先得有个好的网络;
2、运行basicExample,发现起来后看不到视频,主要是ice等服务器信息配置不对,修改licode根目录下的配置文件licode_config.js,主要需要搭建一个本地的turn服务器(参考:http://www.cnblogs.com/lingdhox/p/4209659.html),然后修改其中的stun服务器的配置:
config.erizoController.iceServers = [{'url': 'stun:192.168.2.229'}, {'url':'turn:192.168.2.229', 'username':'lly', 'credential':'1234'}];
3、运行基本例子
./scripts/initLicode.sh
然后启动例子服务,监听的端口是3001(http)和3004(https)
./scripts/initBasicExample.sh
使用网址访问 http://192.168.2.229:3001/connection_test.html 类似loopback测试,能推送和拉自己摄像头的视频
4、分析脚本:
ps -ef |grep node,发现node起了好些个服务
root 3932 1 0 01:31 pts/0 00:00:02 node nuve.js ---监听的是3000(http)端口
root 4266 1 0 01:31 pts/0 00:00:00 node erizoController.js
root 4593 1 0 01:31 pts/0 00:00:00 node erizoAgent.js
root 4599 4593 0 01:31 ? 00:00:00 node ./../erizoJS/erizoJS.js 172f7e09-5d31-d270-2fc7-0acdeaaf0b1d 10.0.2.15 10.0.2.15
这个脚本启动的node basicServer.js & ,从源码看,其中使用的nuve.js脚本,是initBasicExample.sh 启动前从nuveClient的目录下拷贝来的
cp $ROOT/nuve/nuveClient/dist/nuve.js $EXTRAS/basic_example/
然后nuve.js脚本则在nuve/nuveClient目录下编译生成的,命令如下:
google-closure-compiler-js ../src/N.js ../src/N.API.js > ../build/nuve.js
nuve.js封装的N.API是nuve所有后台服务的接口封装
在basicServer.js文件中,有N.API的初始化函数调用:
N.API.init(config.nuve.superserviceID, config.nuve.superserviceKey, 'http://localhost:3000/');
所以使用的是3000端口开启的服务
connection_test.html中引入的erizo.js是从哪里来的?这个脚本是在installErizoTest.sh脚本中拷贝到测试的public目录的
<script type="text/javascript" src="erizo.js"></script>
cp ../dist/erizo.js ../../test/public
root@vagrant-ubuntu-trusty:/webrtc/licode/extras/basic_example/public# locate erizo.js
/webrtc/licode/erizo_controller/erizoClient/webpack.config.erizo.js
/webrtc/licode/erizo_controller/erizoClient/dist/debug/erizo/erizo.js
/webrtc/licode/erizo_controller/erizoClient/dist/debug/erizo/erizo.js.map
/webrtc/licode/erizo_controller/erizoClient/dist/production/erizo/erizo.js
/webrtc/licode/erizo_controller/erizoClient/dist/production/erizo/erizo.js.map
流程,先创建房间,例子中的房间是这么创建的:
let extra = {data: {basicExampleRoom: true}, mediaConfiguration: mediaConfiguration};
if (type === 'p2p') extra.p2p = true;
N.API.createRoom(name, function (roomID) {
theRoom = roomID._id;
callback(theRoom);
}, function(){}, extra);
拿到房间id后,通过房间id创建token,然后实例化一个房间对象:
var room = Erizo.Room({token:'213h8012hwduahd-321ueiwqewq'});
然后进入房间:
room.connect();
5、firfox显示正常,但mac看不到视频