UE4.27的PixelStreaming像素流送的分流

本地网络中配置UE的像素流送还是挺简单的,基本上勾选启用PixelStreaming插件编译出可执行程序后简单配置即可成功,这里对于基本配置不再赘述.

由于硬件性能的限制,在一台主机上跑满足访问的多个可执行程序实例是不现实的,加上Nvidia显卡对硬编码的限制,默认情况下在GeForce显卡上同时只能进行3个像素流送实例的编码.要满足多人访问不同的实例就要对像素流送进行分流,即根据客户端访问动态的分配空闲的主机和程序实例给客户访问.

上面提到的硬编码全程是Hardware-Accelerated Video Encoding,缩写为NVENC.
Nvidia官网对NVENC的说明:https://developer.nvidia.com/video-encode-and-decode-gpu-support-matrix-new
不同显卡型号同时支持编码会话数量的矩阵表:https://developer.nvidia.com/video-encode-and-decode-gpu-support-matrix-new#Encoder

下面以在一台主机配置出能满足3个用户同时访问独立内容像素流送进行说明

首先对Matchmaker进行配置,它将被用来做访问入口,并且根据实例运行情况进行访问分配.到编译好的可执行程序找到Matchmaker配置文件(实例一目录\Samples\PixelStreaming\WebServers\Matchmaker\config.json)

HttpPort是用户通过浏览器访问Matchmaker的端口,建议使用80,然后给MatchmakerPort指定一个端口,与本机其它使用端口不冲突即可,这里使用8888,保存文件后运行当前目录下的run.bat,启动Matchmaker服务器,命令行窗口出现如下内容,代表Matchmaker当前配置启动成功,不要关闭它.(Matchmaker只需要启动一个)

接下来我们配置第一个实例,将编译好的可执程序创建快捷方式,并在目标字段中增加如下命令,

实例一目录\examplename.exe -AudioMixer -PixelStreamingIP=localhost -RenderOffScreen -PixelStreamingPort=8111

其中localhost代表该像素流送服务的IP地址,像素流送服务在本机运行,所以这里使用localhost,RenderOffScreen代表启动的可执行程序不在当前主机屏幕上渲染运行,8111为第一个像素流送服务的端口,同样的,不要与其它端口冲突即可.双击该快捷方式启动第一个实例.

然后我们配置SignallingWebServer,这里要注意的是每个运行实例都需要对应一个SignallingWebServer,我们找到当前实例的配置文件:实例一目录\Samples\PixelStreaming\WebServers\SignallingWebServer\config.json

首先把UseMatchmaker改为true,即启用Matchmaker支持,因为我们的Matchmaker在本机运行,所以修改MatchmakerAddress的IP为127.0.0.1,在对应的将MatchmakerPort改为8888端口,PublicIp改为本机IP192.168.4.236,HttpPort改为81,StreamerPort改为8111与快捷方式参数一致,这样的参数意味着可以单独通过 http://192.168.4.236:81 访问到该像素流送实例.然后运行实例一目录\Samples\PixelStreaming\WebServers\SignallingWebServer\platform_scripts\cmd\run_local.bat,启动第一个实例的SignallingWebServer:

启动成功后可以看到Cirrus connected to Matchmaker等提示,意味着像素流送实例连接正常,Matchmaker服务连接正常.不要关闭该窗口.

接下来我们配置第二个运行实例,把当前实例程序完全复制出一份,对复制出的可执行程序同样创建快捷方式,增加参数

-AudioMixer -PixelStreamingIP=localhost -RenderOffScreen -PixelStreamingPort=8222

与第一个运行实例的区别是我们端口使用8222,同样与现有端口不冲突即可.双击快捷方式运行第二个实例.

在当前程序中找 实例二目录\Samples\PixelStreaming\WebServers\SignallingWebServer\config.json文件进行修改,与第一个信令服务器大体相同:

不同的地方有两处,是需要把HttpPort端口改为82以及StreamerPort改为8222,保存后运行 实例二目录\Samples\PixelStreaming\WebServers\SignallingWebServer\platform_scripts\cmd\run_local.bat,启动第二个实例的SignallingWebServer:

可以看到连接成功的提示,同样不要关闭该窗口.

如法炮制,复制并配置出第三个实例,即快捷方式用:

-AudioMixer -PixelStreamingIP=localhost -RenderOffScreen -PixelStreamingPort=8333

修改实例三目录\Samples\PixelStreaming\WebServers\SignallingWebServer\config.json信令服务器中的HttpPort设置为83,StreamerPort设置为8333,以及运行 实例三目录\Samples\PixelStreaming\WebServers\SignallingWebServer\platform_scripts\cmd\run_local.bat,启动第三个实例的信令服务器.

每当成功启动一个信令服务器,在Matchmaker窗口都将看到添加连接成功(Adding connection)提示:

现在就可以通过在同一个局域网的浏览器进行访问了,浏览器打开http://192.168.4.236,会被自动分配到空闲的SignallingWebServer,三个SignallingWebServer运行的像素流送实例访问操作互不干扰.

当超出启动的SignallingWebServer实例数量时,浏览器将提示排队等候,一旦有用户退出像素流送访问,当前用户即可自动进入到闲置的SignallingWebServer浏览访问.

好了,今天就写到这里,回见!

发表回复

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