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

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

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

正文

整个部署流程包括:

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

一、自备服务器

此处省略了一部分…

使用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。又或者发给不在同一局域网的朋友做测试。

其他

启动客户端,弹出以下信息:
No compatible GPU found, or failed to load their respective encoder libraries

官网有说明,大概率是显卡不支持NVENC或AMF,可以在这个英伟达这个网站(https://developer.nvidia.com/video-encode-and-decode-gpu-support-matrix-new#Encoder)里查询显卡是否支持。

但我遇到一个问题是,本来丽台P4000是支持的,后来升级4.27之后,启动客户端就弹出上面信息了,说不支持了(升级了显卡驱动即可)。1080显卡没有遇到这样的问题。

另外,4.27打包的软件,启动信令服务器的脚本文件路径换了
换成项目名称\Samples\PixelStreaming\WebServers\SignallingWebServer\platform_scripts\cmd\run.bat

配置文件:项目名称\Samples\PixelStreaming\WebServers\SignallingWebServer\config.json

猜你喜欢

转载自blog.csdn.net/killfunst/article/details/118332751