1、安装Python
2、安装插件
python -m pip install ipython python -m pip install notebook
3、启动项目
cd PATH_TO_NOTEBOOK jupyter notebook
用浏览器访问后进行编辑即可
http://localhost:8888
Learn and share.
1、安装Python
2、安装插件
python -m pip install ipython python -m pip install notebook
3、启动项目
cd PATH_TO_NOTEBOOK jupyter notebook
用浏览器访问后进行编辑即可
http://localhost:8888
Ubuntu18.0.4LTS安装后,蓝牙鼠标经常无法重连,休眠、重启后,都需要重新配对连接。现在咱们来解决这个问题。
1、首先删掉配对的鼠标
2、打开Terminal
bluetoothctl # 查看蓝牙控制器,一般只有一个 >>> list # 选择蓝牙控制器 >>> select 01:23:45:67:89:AB # 查看控制器情况 >>> show # 启动 >>> power on # 扫描,记录蓝牙鼠标地址 >>> scan on # 关闭扫描 >>> scan off # 开启agent >>> agent on # 配对 >>> pair 34:88:5D:87:C0:A6 # 连接 >>> connect 34:88:5D:87:C0:A6 # 信任设备 >>> trust 34:88:5D:87:C0:A6 # 退出
3、 再试一下,是不是好了
尤其是在有多版本Python共存的情况下,修改windows修改环境变量后,经常会导致pip无法启动的情况。
此时,不仅是pip,Python/Scripts目录下的所有脚本都无法启动,并会有如下错误:
Fatal error in launcher: Unable to create process using '"'
其根本原因,其实十分简单,pip无法找到python.exe可执行程序,你可以看pip的源码来确认这一点。
有几种方法可以解决这个问题:
1、环境变量法,更适合单Ptyhon环境
将python.exe路径,增加到PATH环境变量中即可解决问题
2、脚本启动法,适合多个Ptyhon环境
set PATH=PATH_TO_PYTHON\;PATH_TO_PYTHON\Scripts;%PATH% python -m pip install XXX
3、用1或2,更新pip,可以解决问题(对单Python环境更适用)
python -m pip install --upgrade pip
4、修改pip二进制文件
用十六进制编辑工具打开pip.exe
修改python.exe路径
保存
5、用PE编辑器修改pip二进制文件
同方法4
6、解压
用解压工具解压pip,
得到__main__.py
重命名为pip.py
运行
python pip.py install XXX
1、Linux系统
cat /proc/pid/environ | tr '\0' '\n'
2、Windows系统
使用工具Process Explorer
1、下载apache-jena-fuseki和apache-jena
https://jena.apache.org/download/index.cgi
2、将上一篇教程的nt文件转换为tdb格式
cd apache-jena-3.9.0\bat tdbloader.bat --loc="PATH_TO_TDB\tdb" "PATH_TO_NT\movies_mapping.nt"
3、切换到apache-jena-fuseki-3.9.0目录,启动一次服务,然后退出
4、将教程1里面的Movies.owl,拷贝到apache-jena-fuseki-3.9.0\run\databases路径下面,并重命名为Movies.ttl
5、创建配置文件apache-jena-fuseki-3.9.0\run\configuration\fuseki_conf.ttl
@prefix fuseki: <http://jena.apache.org/fuseki#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix tdb: <http://jena.hpl.hp.com/2008/tdb#> .
@prefix ja: <http://jena.hpl.hp.com/2005/11/Assembler#> .
@prefix : <http://base/#> .
<#service> rdf:type fuseki:Service ;
fuseki:name "movies" ;
fuseki:serviceQuery "sparql" ;
fuseki:dataset <#dataset> ;
fuseki:serviceReadGraphStore "get" ;
fuseki:serviceReadWriteGraphStore "data" ;
fuseki:serviceUpdate "update" ;
fuseki:serviceUpload "upload"
.
<#dataset> rdf:type ja:RDFDataset ;
ja:defaultGraph <#modelInf> ;
.
<#modelInf>
rdf:type ja:InfModel ;
#ja:reasoner [ja:reasonerURL <http://jena.hpl.hp.com/2003/OWLFBRuleReasoner>]
ja:reasoner [
ja:reasonerURL <http://jena.hpl.hp.com/2003/GenericRuleReasoner> ;
ja:rulesFrom <file:///D:/ProjectsMy/KG/apache-jena-fuseki-3.9.0/run/databases/Rules.ttl> ] ;
ja:baseModel <#baseModel> ;
.
<#baseModel> rdf:type tdb:GraphTDB ;
tdb:location "D:/ProjectsMy/KG/workspace/data/tdb" ;
tdb:unionDefaultGraph true ;
.
6、创建规则文件apache-jena-fuseki-3.9.0\run\databases\Movies.ttl
这个规则规定了,演过喜剧的演员,叫做喜剧演员(Comedian)
@prefix xsd: <XML Schema> . @prefix owl: <http://www.w3.org/2002/07/owl#> . @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . @prefix : <https://www.neohope.com/hansen/ontologies/2018/movies#> . [ruleComedian: (?aPerson :hasActedIn ?aMovie) (?aMovie :hasGenre ?aGenre) (?aGenre :genreName '喜剧') -> (?aPerson rdf:type :Comedian)] [ruleInverse: (?aPerson :hasActedIn ?aMove) -> (?aMovie :hasActor ?aPerson)]
7、启动apache-jena-fuseki-3.9.0
8、访问http://localhost:3030/
9、进行查询,上一篇的例子也都可以用
http://localhost:3030/dataset.html?tab=query&ds=/movies
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
prefix owl: <http://www.w3.org/2002/07/owl#>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
prefix : <https://www.neohope.com/hansen/ontologies/2018/movies#>
SELECT ?name WHERE {
?aComedian rdf:type :Comedian.
?aComedian :personName ?name.
}
LIMIT 10
10、通过python访问
https://github.com/neohope/kg-demo-for-movie/tree/master/src/query-jena.py
参考链接:
https://zhuanlan.zhihu.com/knowledgegraph
https://github.com/SimmerChan/KG-demo-for-movie
PS:
参考教程中,原作者通过结巴分词+正则匹配+Jena,实现了一个简单的问答系统,感兴趣的话,大家可以看下。
1、安装MySQL5,并新建movies库
2、导入数据
https://github.com/neohope/kg-demo-for-movie/tree/master/data/movies.sql
3、下载d2rq,并配置好JDK环境变量
http://d2rq.org/
4、利用d2rq生成mapping
generate-mapping -u movie -p password -o movies_mapping.ttl jdbc:mysql:///movies
5、手工编辑ttl,任务如下
设置正确的域名
修正类名与属性名
删除一些不需要的字段
修改前后的数据可以在这里找到
https://github.com/neohope/kg-demo-for-movie/tree/master/data/movies_mapping.ttl
https://github.com/neohope/kg-demo-for-movie/tree/master/data/movies_mapping_ok.ttl
6、输出RDF文件,用于后续的教程
dump-rdf.bat -o movies_mapping.nt movies_mapping_ok.ttl
7、启动d2r服务
d2r-server.bat movies_mapping_ok.ttl
8、访问及浏览数据
http://localhost:2020/
9、查询
http://localhost:2020/snorql/
#周星驰演过的电影
SELECT ?title WHERE {
?aPerson rdf:type :Person.
?aPerson :personName '周星驰'.
?aPerson :hasActedIn ?aMovie.
?aMovie :movieTitle ?title
}
LIMIT 10
#英雄的演员
SELECT ?actor WHERE {
?aMovie rdf:type :Movie.
?aMovie :movieTitle '英雄'.
?aPerson :hasActedIn ?aMovie.
?aPerson :personName ?actor
}
LIMIT 10
#巩俐参演的,评分高于7的电影
SELECT ?title WHERE {
?aPerson rdf:type :Person.
?aPerson :personName '巩俐'.
?aPerson :hasActedIn ?aMovie.
?aMovie :movieTitle ?title.
?aMovie :movieRating ?rating.
FILTER (?rating>=7)
}
LIMIT 10
10、通过python访问
https://github.com/neohope/kg-demo-for-movie/tree/master/src/query-d2rq.py
参考链接:
https://zhuanlan.zhihu.com/knowledgegraph
https://github.com/SimmerChan/KG-demo-for-movie
1、下载Protege工具
https://protege.stanford.edu/
2、安装JDK,并在配置好JDK环境变量
3、打开Protege
4、在Active Ontology页面,填写两个IRI,我分别填写了下面的数值
#Ontology IRI https://www.neohope.com/hansen/ontologies/2018/movies #Ontology Version IRI https://www.neohope.com/hansen/ontologies/2018/movies/1.0.0
5、在Entities页面,切换到Classes,新建三个Class
Genre Movie Person
6、Entities页面,切换到Data properties,新建以下属性
genereId{Domain=Genre,Ranges=xsd:string}
genereName{Domain=Genre,Ranges=xsd:string}
movieId{Domain=Movie,Ranges=xsd:string}
movieIntroduction{Domain=Movie,Ranges=xsd:string}
movieRating{Domain=Movie,Ranges=xsd:string}
movieReleaseDate{Domain=Movie,Ranges=xsd:string}
movieTitile{Domain=Movie,Ranges=xsd:string}
personAppellation{Domain=Person,Ranges=xsd:string}
->personEnglishName{Domain=Person,Ranges=xsd:string}
->personName{Domain=Person,Ranges=xsd:string}
personBiography{Domain=Person,Ranges=xsd:string}
personbirthDay{Domain=Person,Ranges=xsd:string}
personBirthPlace{Domain=Person,Ranges=xsd:string}
personDeathDay{Domain=Person,Ranges=xsd:string}
personId{Domain=Person,Ranges=xsd:string}
7、Entities页面,切换到Object Properties,新建以下属性
hasActedIn{Domain=Person,Range=Movie,InverseOf=hasActor}
hasActor{Domain=Movie,Range=Person}
hasGenre{Domain=Person,Range=Genre}
8、保存为Movies.owl,这个文件可以在后面jena的例子中用到
9、建模后的结果,可以在这里获取:
https://github.com/neohope/kg-demo-for-movie/tree/master/protege
参考链接:
https://zhuanlan.zhihu.com/knowledgegraph
https://github.com/SimmerChan/KG-demo-for-movie
本节说明一下遗留的一些内容:
1、开启GPU加速
如果需要GPU加速,除了Intel指定的硬件外,还需要:
https://software.intel.com/en-us/intel-media-server-studio
有社区版,大家感兴趣的可以自己试一下。
2、开启VCA加速
如果需要支持VCA(Intel Visual Compute Accelerator)卡加速,请参考
https://software.intel.com/en-us/webrtc-conference-server-guide-mcu-installation#section2_3_10
3、支持集群
如果需要支持集群,请参考
https://software.intel.com/en-us/webrtc-conference-server-guide-mcu-installation#section2_3_8
咋说呢,总体上感觉这个集群方案有些过于复杂,需要用的时候再看吧。
本节运行一下WebRTC自带的两个Demo。
大家可以解压CS_WebRTC_Client_SDK_JavaScript.v4.1,看一下,里面有两个Demo。
第一个Demo是conference,已经集成到MCU Server里面了,当我们运行bin/start-all.sh命令时,就会启动了。
我们可以通过Chrome访问https://172.16.172.80:3004,就可以看到自己的视频。
再打开一个Chrome访问https://172.16.172.80:3004,就可以看到两路视频合并为一路视频输出了。
由于https证书为自签名,所以浏览器会给出安全提示,将证书加入可信范围,跳过就好了,全部功能只在Chrome成功过。
本节重点看下第二个Demo,是P2P。这个Demo需要两个服务的支持,一个是在第一节我们安装的Peer Server,另一个是需要安装一个turnserver。
1、下载coturn
https://github.com/coturn/coturn/releases
2、安装依赖库
2.1、安装levent
https://sourceforge.net/projects/levent/files/release-2.0.22-stable/
./configure make make install
2.2、安装openssl-devel
sudo yum install openssl openssl-libs openssl-devel
2.3、安装
yum install sqlite-devel
3、编译coturn
./configure make
4、编写coturn配置文件
vi path_to_coturn/bin/urnserver.conf #新增以下内容 listening-device=enp0s3 listening-port=3478 relay-device=enp0s3 min-port=59000 max-port=65000 fingerprint lt-cred-mech use-auth-secret static-auth-secret=demo realm=demo stale-nonce user=demo:demo cert=path_to_coturn/examples/etc/turn_server_cert.pem pkey=path_to_coturn/examples/etc/turn_server_pkey.pem no-loopback-peers no-multicast-peers mobility no-cli
5、启动coturn
cd path_to_coturn/bin sudo ./turnserver
6、启动PeerServer
cd PeerServer-Release-4.1 node peerserver.js
7、编辑本地页面peercall.html的以下部分
var serverAddress='https://172.16.172.80:8096';
const signaling = new SignalingChannel();
let publicationForCamera;
let publicationForScreen;
var p2p = new Ics.P2P.P2PClient({
audioEncodings: true,
videoEncodings: [{codec:{name: 'h264'}}, {codec: {name: 'vp9'}}, {codec: {name: 'vp8'}}],
rtcConfiguration:{
iceServers: [{
urls: "stun:172.16.172.80:3478"
}, {
urls: ["turn:172.16.172.80:3478?transport=udp",
"turn:172.16.172.80:3478?transport=tcp"
],
credential: "demo",
username: "demo"
}]
},
}, signaling);
8、测试
现在用两个Chrome页面浏览本地页面peercall.html,也能使用部分功能,但如果使用全部功能,还是要部署到HTTP服务器的。
9、为了支持Chrome分享桌面,需要安装并配置插件
9.1、修改插件中域名配置
CS_WebRTC_Client_SDK_JavaScript.v4.1\screen-sharing-chrome-extension\manifest.json
"externally_connectable": {
"matches": ["*://172.16.172.80/*", "*://localhost/*"]
},
9.2、打开扩展管理
Chrome->Settings->Entensions
9.3、开启Developer mode
9.4、Load unpacked
选择CS_WebRTC_Client_SDK_JavaScript.v4.1\screen-sharing-chrome-extension
9.5、安装后,会有一个插件ID
我的插件ID为:ongdcdianlnmjiegeandlohjbogjndmc
10、编辑本地页面peercall.html的以下部分
extensionId:'ongdcdianlnmjiegeandlohjbogjndmc'
11、部署网站
将页面部署到你熟悉的HTTP服务器,加入HTTPS证书,并要在HTTP头中允许CORS。
'Access-Control-Allow-Origin', '*'
一个偷懒的办法是,将MCU-Release-v4.1/extras/basic_example复制一份,按规则替换了静态资源。
修改下面几个文件;
package.json修改包描述 quickfix2spdybug47.js删除 samplertcservice.js删除不需要的API,然后修改端口为HTTP4001、HTTPS4004
然后启动了网站。
node samplertcservice.js
12、测试
这样访问https://172.16.172.80:4004即可。
第一个页面,Login左边填写User01,点击登录
第二个页面,Login左边填写User02,点击登录
第一个页面,SetRemoteId为User02
第二个页面,SetRemoteId为User01
第一个页面,SendData数据“123”,第二个页面可以看到。
第一个页面,Share Camera/Share Screen,第二个页面可以看到。
PS:
如果看不到,建议检查以下几件事情
A、必须HTTPS访问
B、Chrom和FF的控制台是否有报错
C、是否证书和HTTPS网站加入了可信列表
D、是否证书和HTTPS的地址是一致的
PS:
如果是Chrome插件有问题,主要确认
A、必须是HTTPS访问
B、网页的Chrome插件ID,与Chrome中插件ID是否一致
C、插件配置中的通配域名,是否与你的域名一致
D、是否证书和HTTPS网站加入了可信列表
E、是否证书和HTTPS的地址是一致的
F、是否打开了开发者模式
13、关闭页面
可以查看PeerServer的日志
本节开始安装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