前言

之前在视频流调试过程(海康威视+Kurento)一文中对基本的WebRTC服务器Kurento的使用有了基本的了解。但是,在后续的使用过程中,出现了一个深坑。我在通过公网访问的时候,发现是无法播放视频的。经过这里还有一个坑,今天我们就来填它。

不过这次有个遗憾,就是由于这次折腾的环境是我在家后来装的,所以操作系统是ubuntu20.04。还是将就看吧,有机会的话,我把centos7的操作补上

coturn服务

coturn是一个封装好的turn server。用来帮助我们穿透NAT网络。是的,公网之所以无法播放,是因为nat网络结构。换句话说,你在网络里加个路由器,做端口映射,一样无法播放。
coturn官网
coturnserver4.5.2
由于第一次探索,还是用编译安装,以后有机会再尝试docker使用吧。

安装

先安装依赖

sudo apt-get install sqlite3 gcc pkgconf libssl-dev libevent-dev libpq-dev mysql-client libmysqlclient-dev libhiredis-dev make

配置并安装

sudo ./configure
sudo make
sudo make install

启动turnserver

nohup turnserver -L 0.0.0.0 -a -u kurento:kurento -v -f -r psvmc.cn &

然后查看相应的端口号3478是否存在进程

sudo lsof -i:3478

这说明turnserver已经启动了。

配置

我们先停掉他(刚才的命令会显示进程号,kill掉它),然后进行配置
创建默认配置文件

sudo cp /usr/local/etc/turnserver.conf.default /usr/local/etc/turnserver.conf

创建证书

sudo 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

会有一系列的交互填写内容,我的大概如下

Country Name (2 letter code) [AU]:cn
State or Province Name (full name) [Some-State]:sichuan
Locality Name (eg, city) []:chengdu
Organization Name (eg, company) [Internet Widgits Pty Ltd]:nature
Organizational Unit Name (eg, section) []:nature
Common Name (e.g. server FQDN or YOUR name) []: 你服务器所在的公网地址
Email Address []:linghuanxu@qq.com

修改配置文件

sudo vim /usr/local/etc/turnserver.conf

大概内容如下

# 设置转发的ip(局域网ip),如果不设置,他会自己选择默认的
relay-ip=172.24.197.1# 转发的外网ip(本机外网ip),用于NAT 地址映射
external-ip=39.104.20.110# 转发的线程数,其实默认不设置最好
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=psvmc.cn# 证书
cert=/usr/local/etc/turn_server_cert.pem
pkey=/usr/local/etc/turn_server_pkey.pem# 输出log
log-file=stdoutmobility

验证

在此启动coturn服务,防火墙对外映射端口:

  • 8443: 播放网页及wss端口
  • 3478:coturn监听端口
  • 40000~60000:udp端口传输端口。经过验证,这些端口不用对公网做端口映射
    接下来,我们来验证coturn是否成功了。
    有这么个网站:https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/

    在红框区域天上地址和配置文件里配的用户名密码。注意uri的格式是:stun:ip:port 然后点击add server。
    填好后,在下面Gather candidates按钮,如下图:

    只要出现了Done,就可以了,说明成功了。

配置kurento

#进入镜像
sudo 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=27.50.142.155
stunServerPort=3478
turnURL=kurento:kurento@27.50.142.155:3478?transport=udp

退出并重启容器

exit
sudo docker restart kms

调用端改造

这里我们直接以kurento-player这个例子中的代码为例,在js的start函数中,先添加如下定义:

var iceservers={"iceServers":[{urls:"stun:公网IP:3478"},{urls:["turn:公网IP:3478"],username:"kurento",credential: "kurento"}]}

然后在将这个配置加入连接的配置中

var options = {remoteVideo : video,mediaConstraints : userMediaConstraints,onicecandidate : onIceCandidate,configuration: iceservers  //添加的是这行配置}

到此,已经可以成功在公网进行播放了。
终于可以睡个好觉了

使用Kurento提供公网视频流相关推荐

  1. 公网视频流访问之webrtc-streamer

    前言 之前两篇帖子 视频流调试过程(海康威视+Kurento) 使用Kurento提供公网视频流 分别解决了从rstp视频流转码到页面播放和kurento的网络穿透的问题.但是吧,在我这次的具体方案中 ...

  2. 家用移动光猫(型号:HS8545M5)利用公网ipv6对外提供公网服务。(100M的宽带,真香 )

    因为家里有空闲电脑,并且家里的移动宽带是100M. 想着自己的阿里云服务器才5M的带宽,这简直不是一个档次,阿里云服务器网速640k/s上限. 640k/s*20倍就相当于12M/s的网速.(太香了) ...

  3. 电信单方面关闭ADSL用户入口80端口,导致用户有关80端口对外服务无法实现,严重违反提供公网IP的合同

    电信单方面关闭ADSL用户入口80端口,导致用户有关80端口对外服务无法实现,严重违反提供公网IP的合同 ADSL拨号用户80,22端口被电信屏蔽情况 1.我申请有两个ADSL电信宽带账户,一个是小区 ...

  4. Windows笔记本本地摄像头提供Rtsp视频流服务

    一.背景 本地测试CV,需要使用RTSP视频流进行测试,所以需要在本地Windows10笔记本摄像头提供RTSP视频流服务. Windows 环境下使用 FFmpeg 推送本地摄像头为RTSP流,并使 ...

  5. 内网穿透实现实体服务器变云服务器:服务器无公网ip,如何提供公网网站,又如何异地ssh登录或者异地登录服务器的宝塔面板

    先说本经验的应用场景 up主的就业方向是开发网站前后端,有一台自己的实体服务器,没有公网IP,我希望: 能长久地提供任何人在任何地点都能用浏览器访问到的网站: 另外由于服务器存放在家里,我开学.旅游. ...

  6. Win10 笔记本本地摄像头提供 Rtsp 视频流服务

    1. 安装 FFmpeg 下载 FFmpeg 并配置环境,执行 ffmpeg -version 测试安装是否成功. 2. 下载 EasyDarwin 下载后解压到本地,双击 EasyDarwin.ex ...

  7. 互动直播之WebRTC服务器Kurento实战

    [转载请注明出处]:https://blog.csdn.net/huahao1989/article/details/106321369 1. Kurento Kurento的主要组件是Kurento ...

  8. kurento API解读

    内容来源于官方文档,建议阅读官方文档,我写的不可能比它更好了 Kurento API 暴露的这几个对象需要我们去理解,并且我们的使用也是围绕这几个抽象对象来的. Media Elements and ...

  9. 主流Webrtc流媒体服务器之Kurento Media Server

    一. 什么是Kurento Media Server Kurento Media Server(KMS)是一个多媒体服务器软件包,可用于为WebRTC平台开发高级视频应用程序.Kurento是一个底层 ...

最新文章

  1. 干货|你的Paper阅读能力合格了吗(硕士生版)
  2. 根证书和中间证书的区别
  3. Spring Boot 返回 JSON 数据,一分钟搞定!
  4. 中国合同环境服务行业规划可行性及运营动态分析报告2022-2028年
  5. [pythonjava爬虫实战]-爬取学院老师信息之-java版本python版本
  6. python设计自定义函数_python
  7. Java新特性:数据类型可以扔掉了?
  8. django上传文件到服务器,如何用django将文件上传到服务器?
  9. sheet中没有getcolumns()方法吗_家庭亲子教育中的八种方法,你做到了吗?
  10. 计算机等级一考通2021,2021驾校一考通题库
  11. php注册页面 邮件回复,PHP发送邮件确认验证注册功能示例【修改别人邮件类】...
  12. 滴答清单微信登录界面丢失
  13. 单点登录sso认证中心
  14. YYC松鼠视频短信对接教程
  15. php 怎样清除浏览器痕迹,如何清除电脑使用痕迹?上网痕迹清理的方法介绍
  16. java写一个发红包_Java实现微信发红包
  17. 知乎之问和小雷之解: 现在的年轻人为什么都那么着急?
  18. NOIP 陶陶摘苹果
  19. 常用Linux命令大全(100%收藏食用❤️)
  20. USB口的条形码扫描器接口编程(VB) 转

热门文章

  1. why I hate framework(转载)
  2. POI封装工具easyexcel导出EXCEL表样式设置
  3. 【设备问题】罗技M590鼠标无法连接Macbook Pro问题解决
  4. 此网站的安全证书有问题,没有继续浏览选项
  5. 黄金市场主打选择多样化 趁势追击瞄准收益大蛋糕
  6. excel中筛选后求和
  7. Symbol 详解与用法
  8. 18个优秀的在线图片编辑服务网站 | 可能吧
  9. 【免费教程】Delft3D水动力模型应用和地表水环评报告编制
  10. AutoHome项目的学习