【转载请注明出处】:http://www.javashuo.com/article/p-fgyqvceq-he.htmlhtml
Kurento的主要组件是Kurento媒体服务器(KMS),负责媒体传输,处理,记录和播放。KMS创建在出色的GStreamer多媒体库之上,并提供如下功能:java
Kurento的设计基于如下主要原则:node
信号和媒体是两个独立的平面,以便应用程序能够分别处理多媒体处理的那些方面。linux
Kurento Media Server和应用程序能够在不一样的机器之间并置,升级或分布。
一个应用程序能够调用多个Kurento Media Server的服务。相反的状况也适用,即Kurento Media Server能够知足多个应用程序的请求。git
Kurento适合集成到云环境中以充当PaaS(平台即服务)组件。github
经过媒体管道连接媒体元素是一种挑战多媒体处理复杂性的直观方法。web
开发人员无需了解内部Kurento Media Server的复杂性:全部应用程序均可以以开发人员喜欢的任何技术或框架部署,从客户端到服务器。从浏览器到云服务。redis
Kurento提供端到端通讯功能,所以开发人员无需处理在客户端设备上传输,编码/解码和呈现媒体的复杂性。算法
Kurento不只支持交互式人际通讯(例如具备对话呼叫推送/接收功能的Skype),并且还支持人机(例如经过实时流传输的视频点播)和人机(例如远程视频录制) ,多传感器数据交换)通讯。spring
经过媒体元素和管道实现的模块化容许经过“面向图形”的语言定义应用程序的媒体处理功能,其中应用程序开发人员能够经过连接适当的功能来建立所需的逻辑。
Kurento可以为QoS监视,计费和审计生成丰富而详细的信息。
Kurento旨在支持无缝集成到电话运营商的IMS基础架构中。
Kurento提供了透明的媒体适配层,以使在屏幕大小,功耗,传输速率等方面具备不一样要求的不一样设备之间的融合成为可能。
Kurento被设计为可插入框架,Kurento中的每一个插件都称为一个模块,可使用新的自定义模块扩展Kurento Media Server。更多信息,请阅读Kurento模块部分。
Kurento模块分为三类:
与Kurento Media Server开箱即用合并:
Kurento团队开发的额外模块,用于加强Kurento Media Server的基本功能。到目前为止,有四个内置模块,分别是:
kms-crowddetector:用于检测视频流中人汇集的过滤器。
Kurento Media Server的扩展,提供了新的媒体功能。
yum update # RHEL/CentOS 7: yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm # RHEL/CentOS 8: yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
# 卸载旧版本(若是安装过旧版本的话) yum remove docker docker-common docker-selinux docker-engine # 安装须要的软件包 yum install -y yum-utils device-mapper-persistent-data lvm2 #设置docker源 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 可以使用阿里云docker源 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #安装docker yum install docker-ce docker-ce-cli containerd.io #启动 docker systemctl start docker #开机自启 systemctl enable docker #查看KMS日志 docker logs kms #实时查看: docker logs -f kms
#安装最新版kurento docker pull kurento/kurento-media-server:latest #启动镜像 docker run --name kms -d -p 8888:8888 kurento/kurento-media-server:latest
该Kurento媒体服务器的端口(KMS)过程当中默认监听8888客户端WebSocket链接。
容器运行后,您可使用docker logs命令获取其日志输出:
docker logs --follow kms >"kms-$(date '+%Y%m%dT%H%M%S').log" 2>&1
要检查KMS是否已启动并正在侦听链接,请使用如下命令:
curl \ --include \ --header "Connection: Upgrade" \ --header "Upgrade: websocket" \ --header "Host: 127.0.0.1:8888" \ --header "Origin: 127.0.0.1" \ http://127.0.0.1:8888/kurento
您应该获得相似于如下内容的响应:
HTTP/1.1 500 Internal Server Error Server: WebSocket++/0.7.0
忽略“ Server Error ”消息:这是预期的,它实际上证实KMS已启动并正在侦听链接。
#安装依赖 yum install -y openssl-devel libevent-devel git #clone 源码 git clone https://github.com/coturn/coturn.git cd coturn ./configure make sudo make install # 启动turnserver nohup turnserver -L 0.0.0.0 -a -u kurento:kurento123pwd -v -f -r zhaolong.org & #而后查看相应的端口号3478是否存在进程 sudo lsof -i:3478
这样就说明已经能够启动了,接下来咱们先停掉turnserver,从新配置。
turnserver 默认加载配置文件是etc/turnserver.conf或/usr/local/etc/turnserver.conf。
cp /usr/local/etc/turnserver.conf.default /usr/local/etc/turnserver.conf openssl req -x509 -newkey rsa:2048 -keyout /usr/local/etc/turn_server_pkey.pem -out /usr/local/etc/turn_server_cert.pem -days 99999 -nodes
turnserver 默认使用的是SQLite数据库,若是是须要使用MySQL或者PostgreSQL,须要先初始化数据库,sql位置在/usr/local/share/turnserver/schema.sql
。
修改的turnserver.conf内容:
# 设置转发的ip(局域网ip),若是不设置,他会本身选择默认的 relay-ip=xx.xx.xx.xx # 转发的外网ip(本机外网ip),用于NAT 地址映射 external-ip=xx.xx.xx.xx # 转发的线程数,其实默认不设置最好 relay-threads=5 #UDP 最小端口和最大端口 min-port=40000 max-port=60000 # WebRTC 的消息里会用到 fingerprint # WebRTC 认证须要 lt-cred-mech #中继服务器的监听器IP地址 listening-ip=0.0.0.0 #静态帐号 user=kurento:kurento # 统计状态信息的redis db redis-statsdb="ip=xx.xx.xxx.xx dbname=3 password=xxxx port=6379 connect_timeout=30" # 用户登陆域 realm=zhaolong.org # 证书 cert=/usr/local/etc/turn_server_cert.pem # 证书key pkey=/usr/local/etc/turn_server_pkey.pem # 输出log log-file=stdout mobility
从新启动turnserver
nohup turnserver >> /var/tmp/turn.log &
记得开放使用的端口:
能够用这个网址去测试stun和turn的有效性:
https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/
测试stun
测试stun的时候不须要输入帐号密码,只须要输入stun:
测试turn
须要输入turn地址,以turn:开头,以及帐号密码
进入kurento的镜像编辑kurento的配置文件:
#进入镜像 docker exec -it kms /bin/bash #安装vim apt-get update apt-get install vim #进入配置文件夹 cd /etc/kurento/modules/kurento/ #编辑配置文件 vim WebRtcEndpoint.conf.ini
修改stun 和turn 信息
stunServerAddress=xx.xx.xx.xx stunServerPort=pp turnURL=username:userpwd@xx.xx.xx.xx:pp?transport=tcp
重启kurento容器
#查看当前启动的容器 docker ps docker restart {kurento容器ID}
git clone https://github.com/Kurento/kurento-tutorial-java.git cd kurento-tutorial-java/kurento-hello-world vim src/main/resources/static/js/index.js
在函数function uiStart()里,增长一个叫iceservers的变量,格式以下:
var iceservers={ "iceServers":[ { urls:"stun:xx.xx.xx.xx:3478" }, { urls:["turn:xx.xx.xx.xx:3478"] username:"xxxx", credential: "xxxx" } ] }
再修改底下的options变量:
const options = { localVideo: uiLocalVideo, remoteVideo: uiRemoteVideo, mediaConstraints: { audio: true, video: true }, onicecandidate: (candidate) => sendMessage({ id: 'ADD_ICE_CANDIDATE', candidate: candidate, }), configuration: iceservers //修改在这里,增长了一个configuration的key };
启动项目
mvn -U clean spring-boot:run -Dkms.url=ws://xx.xx.xx.xx:8888/kurento
启动完以后用谷歌或者火狐浏览器打开demo页面https://localhost:8443/
点击start
启动
至此,最简单的HelloWorld已经完成。
【转载请注明出处】: http://www.javashuo.com/article/p-fgyqvceq-he.html