【转载请注明出处】:https://cloud.tencent.com/developer/article/1631966
Kurento的主要组件是Kurento媒体服务器(KMS),负责媒体传输,处理,记录和播放。KMS建立在出色的GStreamer多媒体库之上,并提供以下功能:
Kurento的设计基于以下主要原则:
Kurento被设计为可插入框架,Kurento中的每个插件都称为一个模块,可以使用新的自定义模块扩展Kurento Media Server。更多信息,请阅读Kurento模块部分。
Kurento模块分为三类:
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已经完成。
【转载请注明出处】: https://cloud.tencent.com/developer/article/1631966
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。