licode 环境搭建

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目录的
     
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看不到视频

你可能感兴趣的:(流媒体)