UE4.26像素流送之公网部署(自建TURN服务器)

像素流送(Pixel Streaming),是UE4力推的网站部署方案。官方从UE4.24开始,默认取消了对HTML5打包的支持,转而使用这种新颖的方式。这种方式的最大好处是,对客户的电脑性能基本没有要求,只需要带宽足够,客户就可以像观看高清电影一样流畅使用三维软件。当然,对推流的服务器还是有显卡要求的。

像素流送的部署方式主要分局域网公网部署
本文主要针对公网部署,假设读者已经掌握了局域网部署的方法。

正文

本方案用到Vultr的服务器,5美金一个月,使用我的推荐码,可以获取100美金试用金额。

点击打开Vultr官网

整个部署流程包括:

  • 注册Linux服务器
  • 安装部署coturn服务
  • 拷贝信令服务器到Linux服务器
  • 启动UE应用进行推流
  • 公网测试

一、注册Vultr Linux服务器

注册步骤不细说了,记得使用我的链接进行注册就行,不然没有试用金,只能自己充值了。

推荐链接:https://www.vultr.com/?ref=8437132-6G

创建服务器,系统可以选择centos7,服务器可以选日本(最近使用美国的也还行,延时150ms)。

使用ssh,登进服务器就可以到下一步了。

推荐使用MobaXterm工具登录linux服务器。若没接触过这方面的操作,可以留言告知,马上补充上来。

二、部署coturn

安装libevent-2.0

wget https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz
tar zxvf libevent-2.0.21-stable.tar.gz
cd libevent-2.0.21-stable && ./configure
make && make install

安装coturn

git clone https://github.com/coturn/coturn
cd coturn 
./configure 
make 
make install

这一步可能问题较多,复制error信息百度一下,基本有解决方案。

configure 报错的话,需要 yum -y install gcc

检查是否安装成功

which turnserver

修改配置文件

vi /usr/local/etc/turnserver.conf

turnserver.conf 文件内容

relay-device=eth0   # 与ifconfig查到的网卡名称一致
listening-ip=xxx    #内网ip,我填的还是服务器的公网IP
listening-port=3478
tls-listening-port=5349
relay-ip=xxx #公网IP
external-ip=xxx    #公网IP
relay-threads=50
lt-cred-mech
cert=/etc/turn_server_cert.pem
pkey=/etc/turn_server_pkey.pem
pidfile=”/var/run/turnserver.pid”
min-port=49152
max-port=65535
user=dvlee:123456

注意这里的user,用户名和密码,后面部署信令服务器需要用到。

启动turnserver服务

turnserver --userdb /root/turnuser.db 

放行默认端口

firewall-cmd --zone=public --add-port=3478/udp --permanent
firewall-cmd --zone=public --add-port=3478/tcp --permanent
重新加载
firewall-cmd --reload

到此已经部署完成,可以到下面网址进行测试。
https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/

在这里插入图片描述
返回replay就表示turn服务器没有问题了。

如果有问题的话,推荐使用wireshark进行抓包分析,一般问题可能是服务未开、端口不通、密码不正确等。

三、部署信令服务器

信令服务器可以部署在用于推流的电脑,也可以拷贝到linux服务器中运行。

因为UE4提供的信令服务器还能启动web服务,为简单起见,还考虑到最终访问的地址为公网地址(即linux服务器的地址),那就需要把UE4打包出来的信令服务器文件(SignallingWebServer整个目录)拷贝到linux里了。

使用MobaXterm工具可以直接拖文件进去,当然也可以scp抄送过去,此处不详述。

拷贝前需要先修改好配置文件,当然也可以直接在linux中修改。
配置文件的路径SignallingWebServer/config.json

{
        "UseFrontend": false,
        "UseMatchmaker": false,
        "UseHTTPS": false,
        "UseAuthentication": false,
        "LogToFile": true,
        "HomepageFile": "player.htm",
        "AdditionalRoutes": {},
        "EnableWebserver": true,
        "peerConnectionOptions": "{\"offerExtmapAllowMixed\": false, \"iceServers\": [{\"urls\": [\"stun:xxx:3478\",\"turn:xxx:3478\"], \"username\": \"dvlee\", \"credential\": \"123456\"}] }",
        "steamerPort": 18888,
        "httpPort": 66,
        "publicIp": "xxx"
}

"EnableWebserver": true :配置为启动web服务器
"httpPort": 66:这是web服务器的端口
"HomepageFile": "player.htm":web访问的网页
peerConnectionOptions这里配置turn服务器的信息

启动信令服务器(需安装node.js)

node cirrus --configFile='./config.json'

四、启动UE应用进行推流

这一步在自己的PC上执行就行,很简单,可以写个简单的bat文件,把官方带的配置,写进里面,也方便以后修改。

bat内容如下:

@echo off

start xxx.exe -ResX=1920 -ResY=1080 -PixelStreamingIP=xxx -PixelStreamingPort=18888 -log -RenderOffScreen

五、公网测试

浏览器访问公网IP+web端口。
可以使用手机流量测试,记得关闭wifi。又或者发给不在同一局域网的朋友做测试。

Add a Comment

邮箱地址不会被公开。 必填项已用*标注