像素流参考

介绍像素流系统组件支持的浏览器、联网端口和配置选项。

Choose your operating system:

Windows

macOS

Linux

本文将介绍像素流系统各个部分公开的选项、设置和命令行参数。

支持的图形硬件

要运行带有像素流插件的虚幻引擎应用程序,计算机必须具有以下类型的图形硬件之一:

如果你在尝试使用像素流插件时,收到错误消息 找不到兼容的GPU,或无法加载各自的编码器库(No compatible GPU found, or failed to load their respective encoder libraries) ,很可能你的GPU不支持NVENC或AMF。

支持的操作系统

像素流插件支持Windows和Linux平台。不支持OSX。

但是,像素流插件以及随附的信令和Web服务器仅在Windows 10和Ubuntu 18.04/20.04上进行了测试。尚未在其他操作系统上测试,包括Windows 7或8。

支持的客户端浏览器

像素流播放适用于支持WebRTC协议的现代浏览器。例如,它经过了测试,已知可在以下浏览器的最新版本中运行,无需额外配置:

  • Google Chrome(台式机和移动设备)

  • Microsoft Edge(台式机)

  • Mozilla Firefox(台式机和移动设备)

  • Apple Safari(台式机和移动设备)

Microsoft Edge和Opera等其他浏览器可能需要附加组件或插件,并且可能在某些系统上运行不了。

默认网络端口

像素流系统的组件使用下面指定的默认端口通信。你需要确保在运行每个组件的主机上打开这些端口。

组件

端口

信令服务器主机

  • 80 - 用于来自客户端的所有HTTP请求。
    要更改此值,请为信令服务器设置 --httpPort 参数。

  • 443 - 用于当信令服务器在HTTPS模式下运行时来自客户端的所有HTTPS请求。
    要更改此值,请为信令服务器设置 --httpsPort 参数。

  • 8888 - 用于来自虚幻引擎应用程序的所有传入连接请求。
    要更改此值,请为信令服务器设置 --streamerPort 参数, 同时 为UE4应用程序设置 --PixelStreamingPort 参数。

配对器服务器主机

  • 90 - 用于来自客户端的所有HTTP请求。
    要更改此值,请为配对器服务器(使用 --httpPort 参数。

  • 9999 - 用于信令服务器发送的所有消息。
    要更改此值,请为配对器服务器设置 --matchmakerPort 参数,同时 为信令服务器设置 --matchmakerPort 参数。

SFU端口

  • 8889- 打开信令服务器和SFU之间的连接。

像素流控制台命令和启动参数

本小节中含有对使用像素流的应用程序非常实用的控制台命令和启动参数。

所需的启动参数

启动使用像素流的虚幻引擎应用程序时,必须指定以下启动参数:

命令行参数

说明

-PixelStreamingIP=<value><domain>

指定运行信令和Web服务器的计算机的IP地址或域名。

-PixelStreamingPort=<value>

指定信令和Web服务器侦听来自虚幻引擎应用程序的传入通信的端口。信令和Web服务器使用默认值 8888

-PixelStreamingURL=<value>

仅当 -PixelStreamingIP-PixelStreamingPort 不存在时才需要。如果使用了该参数,则同时替换 -PixelStreamingIP-PixelStreamingPort

其中也必须包括WebSocket协议。例如:ws://127.0.0.1:8888wss://127.0.0.1:8888

标准的像素流应用程序启动如下:

MyPixelStreamingApplication.exe -PixelStreamingIP=127.0.0.1 -PixelStreamingPort=8888

或:

MyPixelStreamingApplication.exe -PixelStreamingURL="ws://127.0.0.1:8888"

虚幻引擎启动参数

以下参数并非专用于像素流。但是,这些参数可能会适用于许多像素流应用程序,尤其是在云部署中。

命令行参数

说明

-RenderOffscreen

自动运行虚幻引擎应用程序,在本地计算机上完全没有可见的渲染。该应用程序不会显示窗口,也不会全屏渲染。 你可以将此参数与-ForceRes结合使用,以便阻止虚幻引擎根据主显示器的分辨率自动调整分辨率。

如果省略此参数,虚幻引擎应用程序窗口将正常渲染。如果此应用程序窗口最小化,像素流视频和输入捕获将停止工作。因此,我们建议始终包含此参数,除非你需要在运行时在同一台计算机上本地查看虚幻引擎应用程序的渲染输出。

-ForceRes

当与-ResX和-ResY结合使用时,这将强制虚幻引擎达到指定的分辨率。这在通常没有显示分辨率的云部署中很有用。

-ResX <value>

设置虚幻引擎应用程序启动时分辨率的宽度分量。

-ResY <value>

设置虚幻引擎应用程序启动时分辨率的高度分量。

-AudioMixer

强制虚幻引擎将软件混合用于音频,如果没有音频设备,这可能是必需操作……

-Unattended

在遇到错误时抑制生成对话框。这在屏幕外或容器中运行虚幻引擎时很有用,因为在这些场景中消息框可能会无限期挂起。

-StdOut-FullStdOutLogOutput

这两个标记的组合会产生最大的日志输出,这在SSH终端中调试或查看实时日志时非常有用。

可选的控制台命令启动参数

你可以在运行时将以下设置指定为控制台变量,或在启动时指定为程序参数。

未指定这些设置时,系统将为使用的每种设置提供默认值。大多数用户不需要更改这些设置。事实上,这些值中有许多值由WebRTC内部控制,覆盖它们可能会导致性能下降。

像素流插件配置

更改以下设置将配置像素流插件。

控制台变量

命令行参数

默认值

说明

PixelStreaming.HUDStats

-PixelStreamingHudStats

false

是否在游戏内HUD上显示像素流统计数据。

PixelStreaming.DisableLatencyTester

-PixelStreamingDisableLatencyTester

false

将能够通过像素流插件管线的延迟测试的触发功能禁用。

PixelStreaming.KeyFilter

-PixelStreamingKeyFilter=<values>

""

一系列要从流客户端忽略的按键,各个按键用逗号分隔。例如,"W,A,S,D"可用于过滤掉默认移动键。

N/A

-AllowPixelStreamingCommands

false

用户是否应该能够通过 emitConsoleCommand javascript发送控制台命令。

N/A

-PixelStreamingHideCursor

false

是否隐藏UE应用程序光标。

-SimulcastParameters

-SimulcastParameters="[layer_list]"

-SimulcastParameters=1.0,5000000,100000000,2.0,1000000,5000000

层的格式为[scale_down_factor],[min_bitrate],[max_bitrate]。你应该始终声明至少一层,并且建议缩减因子至少为1。如,缩减因子2表示分辨率减半。

编码器配置

更改以下设置将配置像素流插件使用的底层视频编码器。

控制台变量

命令行参数

默认值

说明

PixelStreaming.Encoder.TargetBitrate

-PixelStreamingEncoderTargetBitrate=<value>

-1

目标比特率(bps)。设置此项会忽略WebRTC想要的比特率(不推荐)。设置为-1时禁用。

PixelStreaming.Encoder.MaxBitrateVBR

-PixelStreamingEncoderMaxBitrate=<value>

20000000

最大比特率(bps)。

在带有NVENC的CBR速率控制模式下不起作用。

PixelStreaming.Encoder.DumpDebugFrames

-PixelStreamingDebugDumpFrame=<value>

false

将帧从编码器转储到磁盘上的文件,以便进行调试。

PixelStreaming.Encoder.MinQP

-PixelStreamingEncoderMinQP=<value>

-1

0-51,值越低,质量越高,但比特率越高。注意:-1将禁用对最小QP的所有硬性限制。

PixelStreaming.Encoder.MaxQP

-PixelStreamingEncoderMaxQP=<value>

-1

0-51,值越低,质量越高,但比特率越高。注意:-1将禁用对最大QP的所有硬限制。

PixelStreaming.Encoder.RateControl

-PixelStreamingEncoderRateControl=<value>

"CBR"

PixelStreaming视频编码器RateControl模式。支持的模式有"ConstQP"、"VBR"、"CBR"。注意:CBR是我们唯一推荐的模式。

PixelStreaming.Encoder.EnableFillerData

-PixelStreamingEnableFillerData=<value>

false

通过填充垃圾数据来维持恒定的比特率。注意:CBR和MinQP = -1时不需要。

PixelStreaming.Encoder.Multipass

-PixelStreamingEncoderMultipass=<value>

"FULL"

编码器每帧要传递多少次。更多细节,请参阅NVENC文档。支持的模式有 "DISABLED""QUARTER""FULL"

PixelStreaming.Encoder.H264Profile

-PixelStreamingH264Profile=<value>

"BASELINE"

编码器使用的H264配置文件。支持的模式有 "AUTO""BASELINE""MAIN""HIGH""HIGH444"STEREOSVC_TEMPORAL_SCALABILITYPROGRESSIVE_HIGHCONSTRAINED_HIGH

基线(Baseline)是唯一保证能受到支持的配置文件,前提是接收方的设备支持WebRTC。

WebRTC配置

更改以下设置将配置像素流插件内部使用的WebRTC库。

控制台变量

命令行参数

默认值

说明

N/A

-LogCmds=PixelStreamingWebRTC <LogLevel> 有帮助的日志级别为:Log、Verbose、VeryVerbose

Log

指定WebRTC的日志级别。对于调试WebRTC非常实用。

PixelStreaming.WebRTC.DegradationPreference

-PixelStreamingWebRTCDegradationPreference=<value>

"MAINTAIN_FRAMERATE"

降级偏好是WebRTC的策略,即在更改编码器比特率/QP不足时,破坏性地调整比特率(更改分辨率/丢帧)。

PixelStreaming.WebRTC.MaxFps

-PixelStreamingWebRTCMaxFps=<value>

60

最大FPS WebRTC将尝试捕获/编码/传输。

PixelStreaming.WebRTC.StartBitrate

-PixelStreamingWebRTCStartBitrate=<value>

10000000

WebRTC将尝试开始流送的起始比特率(bps)。

值必须介于最小和最大比特率之间。

PixelStreaming.WebRTC.MinBitrate

-PixelStreamingWebRTCMinBitrate=<value>

100000

最小比特率(bps),WebRTC的请求不会低于该值。

注意不要将此值设置得太高,否则WebRTC会丢帧。

PixelStreaming.WebRTC.MaxBitrate

-PixelStreamingWebRTCMaxBitrate=<value>

20000000

最大比特率(bps),WebRTC的请求不会超出该值。

注意,不要将此值设置得太高,因为本地(理想)网络实际上会尝试达到此值。

PixelStreaming.WebRTC.LowQpThreshold

-PixelStreamingWebRTCLowQpThreshold=<value>

25

仅在 PixelStreaming.Encoder.LowQP=-1 时使用。1到51之间的值。如果WebRTC的帧数低于此QP,它将尝试做出适配决定。

PixelStreaming.WebRTC.HighQpThreshold

-PixelStreamingWebRTCHighQpThreshold=<value>

37

仅当PixelStreaming.Encoder.MaxQP=-1时使用。值在1至51之间。如果WebRTC的帧数高于此QP,它将尝试做出适配决定。

PixelStreaming.WebRTC.DisableReceiveAudio

-PixelStreamingWebRTCDisableReceiveAudio

false

禁用从浏览器接收音频到UE。

如果不需要音频,在某些情况下可以改善延迟。

PixelStreaming.WebRTC.DisableTransmitAudio

-PixelStreamingWebRTCDisableTransmitAudio

false

禁止将UE音频传输到浏览器。

如果不需要音频,在某些情况下可以改善延迟。

PixelStreaming.WebRTC.DisableAudioSync

-PixelStreamingWebRTCDisableAudioSync

true

在WebRTC中禁用音频和视频轨道的同步。

如果不需要同步,这会改善延迟。

WebRTC将尝试开始流送的起始比特率(bps)。

值必须介于最小和最大比特率之间。

最小比特率(bps),WebRTC的请求不会低于该值。

注意不要将此值设置得太高,否则WebRTC会丢帧。

最大比特率(bps),WebRTC的请求不会超出该值。

注意,不要将此值设置得太高,因为本地(理想)网络实际上会尝试达到此值。

仅在 PixelStreaming.Encoder.LowQP=-1 时使用。1到51之间的值。如果WebRTC的帧数低于此QP,它将尝试做出适配决定。

禁用从浏览器接收音频到UE。

如果不需要音频,在某些情况下可以改善延迟。

禁止将UE音频传输到浏览器。

如果不需要音频,在某些情况下可以改善延迟。

在WebRTC中禁用音频和视频轨道的同步。

如果不需要同步,这会改善延迟。

信令服务器配置参数

有两种参数设置方法:

  • 在命令行上,当你通过运行 Start_SignallingServer.ps1node cirrus.js 启动信令和Web服务器时。在这种情况下,在每个参数名称前加上 --(两个连接号),然后在它后面加上空格,后面是你要设置的值。例如:--httpPort 81

  • 在配置文件中。默认情况下,信令和Web服务器(cirrus.js)会在同一文件夹中查找名为 config.json 的文件。在这种情况下,将每个参数和你要为其设置的值设置为文件中定义的JSON对象中的键值对。如果你已经至少启动过一次信令和Web服务器,请参阅 /Samples/PixelStreaming/WebServers/SignallingWebServer/config.json 文件中已经列出的参数,以获取示例。

参数

说明

--PublicIp <value>

运行信令和Web服务器的计算机的公共IP。

--HttpPort <value>

信令和Web服务器用于与客户端浏览器进行HTTP连接的端口。

--StreamerPort <value>

信令和Web服务器侦听来自虚幻引擎应用程序的传入连接的端口。

--peerConnectionOptions <value>

指定你要虚幻引擎应用程序和浏览器在需要发现自己的外部IP地址时查询的STUN和TURN服务器的主机名或IP地址。
有关STUN和TURN服务器的更多信息,请参阅托管和联网指南
此参数必须是字符串,按照你希望的联络顺序列出服务器URL。必须采用以下格式:
"{ \"iceServers\": [{\"urls\": [<url1>,<url2>,<url3>,...]}]}"
例如:
"{ \"iceServers\": [{\"urls\": [\"stun:34.250.222.95:19302\"]}] }"

"{ \"iceServers\": [{\"urls\": [\"stun:34.250.222.95:19302\",\"turn:34.250.222.95:19312\"]}] }"
虚幻引擎附带的TURN服务器实现需要用户名和密码,如下所示:
"{\"iceServers\":[{\"urls\":[\"stun: 34.250.222.95:19302\",\"turn: 34.250.222.95:19312\"],\"username\":\"<TURN_Username>\",\"credential\":\"<TURN_Password>\"}]}"
其他STUN和TURN实现可能对其凭证有不同的要求。

即使你使用JSON配置文件提供参数,该值也必须格式化为字符串。始终用双引号将其括起来,并使用反斜杠来转义字符串中的所有引号,如上所示。

--HomepageFile <value>

连接客户端浏览器不请求特定URL时,服务器将向其提供的默认页面文件名。
默认值为 player.htm

--AdditionalRoutes <value>

指定信令和Web服务器应该提供的其他文件夹。
该参数必须是JSON对象,也就是说你只能在JSON配置文件中提供它,不能在命令行中提供。
它必须是对象,其中每个键都是URL的一部分,每个键的值是服务器应该为请求客户端提供的本地路径。例如,如果你设置:
"AdditionalRoutes" = { "/myfolder", "C:\some_local_path" }
则当客户端请求 http://server-name/myfolder/index.html 时,服务器将提供名为 C:\some_local_path\index.html 的文件。

--LogToFile <value>

确定信令和Web服务器是否将日志消息写入 ./logs 文件夹中的文件。
默认值为 true

--UseHttps <value>

将此参数设置为 true ,使信令服务器仅接受 httpsPort 上的HTTPS连接。
你还需要将 client-key.pemclient-cert.pem 文件放入信令和Web服务器根文件夹下的 certificates 文件夹中。

--HttpsPort <value>

用于侦听HTTPS连接的端口。仅在启用 UseHttps 时使用。
默认值为 443

--UseMatchmaker <value>

确定信令和Web服务器是否将其当前状态发送到匹配器服务器,以便帮助客户端浏览器找到当前未使用的信令服务器和虚幻引擎应用程序。

--MatchmakerAddress <value>

信令和Web服务器应该连接的匹配器服务器的IP地址。

--MatchmakerPort <value>

匹配器服务器侦听来自信令和Web服务器的传入消息的端口。

--SFUPort <value>

打开信令服务器和SFU之间的连接。

--ConfigFile <value>

指定信令服务器用于检索上述属性值的配置文件的路径和文件名。只能在命令行上设置。

匹配器服务器命令行参数

当你通过运行 run.bat 文件启动匹配器服务器,或通过运行 node.exe matchmaker.js 启动它时,请在命令行上提供这些参数。

参数

说明

--httpPort <value>

设置匹配器侦听来自客户端的HTTP连接的端口号。
默认值为 90

--matchmakerPort <value>

设置匹配器侦听来自Cirrus信令服务器的传入消息的端口号。
默认值为 9999

SFU服务器参数

参数

说明

--PublicIP=<value>

你的SFU服务器将使用的公共IP地址。

本文基于此前的虚幻引擎版本编写,未针对当前的虚幻引擎5.0版本更新过。