Pixel Streaming Reference

Supported browsers, networking ports, and configuration options for the components of the Pixel Streaming system.

Choose your operating system:

Windows

macOS

Linux

This page describes options, settings, and command-line parameters exposed by the various parts of the Pixel Streaming system.

Supported Graphics Hardware

The computer that runs the Unreal Engine application with the Pixel Streaming Plugin must have one of the following types of graphics hardware:

If you receive the error message No compatible GPU found, or failed to load their respective encoder libraries when you try to use the Pixel Streaming Plugin, it is very likely that your GPU does not support NVENC or AMF.

Supported Operating Systems

The Pixel Streaming Plugin and the Signalling and Web Server have been tested on Windows 8 and Windows 10.

They have not been tested on any other operating systems, including Windows 7.

Supported Client Browsers

Pixel Streaming playback works on any modern browser that supports the WebRTC protocol. For example, it has been tested and is known to work in recent versions of the following browsers without additional configuration:

  • Google Chrome (desktop and mobile)

  • Mozilla Firefox (desktop and mobile)

  • Apple Safari (desktop and mobile)

Other browsers such as Microsoft Edge and Opera may require add-ons or plugins, and may not work on all systems.

Default Network Ports

The components of the Pixel Streaming system communicate using the default ports specified below. You'll need to make sure that these ports are open on the host that runs each of these components.

Component

Ports

Signaling Server host

  • 80 - for all HTTP requests coming from clients.
    To change this value, set the --httpPort parameter for the Signaling Server.

  • 443 - for all HTTPS requests coming from clients, when the Signaling Server is running in HTTPS mode.
    To change this value, set the --httpsPort parameter for the Signaling Server.

  • 8888 - for all incoming connection requests from the Unreal Engine application.
    To change this value, set both the --streamerPort parameter for the Signaling Server and the -PixelStreamingPort parameter for the UE4 application.

Matchmaker Server host

  • 90 - for all HTTP requests coming from clients.
    To change this value, use the --httpPort parameter for the Matchmaker Server.

  • 9999 - for all messages sent by the Signaling Server.
    To change this value, set both the --matchmakerPort parameter for the Matchmaker Server and the --matchmakerPort parameter for the Signaling Server.

Unreal Engine Console Commands

Encoder commands control the way the Pixel Streaming Plugin encodes the rendered frames from the Unreal Engine into video images.

Command

Description

Encoder.MaxBitrate

The maximum bitrate allowed, in bps.

Encoder.TargetSize

The target resolution size for the encoder, in the format <width>x<height> .
Also set Encoder.UseBackBufferSIze to false in order for the stream to use this custom size.

Encoder.UseBackBufferSize

Makes the encoder use the back buffer size (that is, the size of the rendered game viewport) rather than the custom size set by Encoder.TargetSize .

Unreal Engine Command-Line Parameters

Set these properties on the command line when you launch your Unreal Engine application.

Parameter

Description

-AllowPixelStreamingCommands

Determines whether the player Web page can use the emitCommand() function to execute console commands in the Unreal Engine remotely. Note that this may have security implications, so enable it with care.

-AudioMixer

Forces the Unreal Engine to use software mixing for audio, so that the Pixel Streaming Plugin can capture audio.
This parameter is required in order to capture audio from the application and stream it to the browser.

-PixelStreamingIP=<value>

Required.

Specifies the IP address or domain name of the computer running the Signaling and Web Server.

-PixelStreamingPort=<value>

Required.

*Specifies the port that the Signaling and Web Server is listening on for incoming communications from the Unreal Engine application.
The Signaling and Web Server uses the default value of `8888`.

-PixelStreamingKeyFilter="<value>"

A comma-separated list of keyboard keys that the Pixel Streaming Plugin should filter out from the input that it relays from the player web page to the Unreal Engine. If a user presses one of these keys in the browser, that event will not be relayed to the Unreal Engine's input controller.
For example, -PixelStreamingKeyFilter="F1..F12,W,A,S,D" filters out all twelve function keys and the movement keys.

-PixelStreamingReceiveStringMaxLength

Sets the maximum length of messages the Unreal Engine application will accept from the Signaling and Web Server, in bytes.
The default value is 1024 .

-RenderOffScreen

Run the Unreal Engine application headless, without any visible rendering at all on the local computer. The application will not display any windows, and will not render in full screen.
You can use this parameter in conjunction with -ForceRes to stop the Unreal Engine from automatically adjusting resolution based on the resolution of the primary display.
If you omit this parameter, the Unreal Engine application window will be rendered normally. If this application window is ever minimized, the Pixel Streaming video and input capture will stop working. We therefore recommend always including this parameter, unless you need to be able to see the rendered output from the Unreal Engine application locally on the same computer while it is running.

-NvEncFrameRateNum=<value>

If specified, overrides the default encoder frame rate.
The default value is set to match t.MaxFPS .

-NvEncMaxEncodeWidth=<value>

The maximum width of a frame that the encoder can encode.
The default value is 3840 .

-NvEncMaxEncodeHeight=<value>

The maximum height of a frame that the encoder can encode.
The default value is 2160 .

-NvEncAverageBitRate=<value>

If specified, overrides the encoder's default average bitrate.

-NvEncH264ConfigLevel=<value>

Determines the H.264 compression level: 5.2 or 5.1. If this parameter is not set, the encoder uses level 5.2, which is capable of encoding high resolutions such as 3840x2160 (4K). If you are encoding at smaller resolutions, you may be able to save some bandwidth by switching to level 5.1. To do this, set this parameter to NV_ENC_LEVEL_H264_51 .
For more information about H.264 levels, see this page .
If your Unreal Engine application reports that it Failed to initialize NvEncoder , and you are working at a high output resolution, then you may need to remove this option to go back to level 5.2.

Signaling Server Configuration Parameters

There are two ways you can set these parameters:

  • On the command line, when you start the Signaling and Web Server by running run.bat or node cirrus.js . In this case, prefix each parameter name with -- (two dashes), then follow it with a space, then the value you want to set. For example: --httpPort 81 .

  • In a configuration file. By default, the Signaling and Web Server ( cirrus.js ) looks for a file named config.json in the same folder. In this case, set each parameter and the value you want to set for it as a key-value pair in the JSON object defined in the file. If you've already started the Signaling and Web Server at least once, see the parameters that are already listed in the Engine/Source/Programs/PixelStreaming/WebServers/SignallingWebServer/config.json file for an example.

Parameter

Description

publicIp

The public IP of the computer running the Signaling and Web Server.

httpPort

The port that the Signaling and Web Server uses for HTTP connections with client browsers.

streamerPort

The port that the Signaling and Web Server listens to for incoming connections from the Unreal Engine application.

peerConnectionOptions

Specifies the hostnames or IP addresses of any STUN and TURN servers you want the Unreal Engine application and browser to query when they need to discover their own external IP addresses.
For more information on STUN and TURN servers, see the Hosting and Networking Guide .
This parameter must be a string that lists the server URLs in the order you want them to be contacted. It must have the following format:
"{ \"iceServers\": [{\"urls\": [<url1>,<url2>,<url3>,...]}] }"
For example:
"{ \"iceServers\": [{\"urls\": [\"stun:34.250.222.95:19302\"]}] }"
or
"{ \"iceServers\": [{\"urls\": [\"stun:34.250.222.95:19302\",\"turn:34.250.222.95:19312\"]}] }"
The TURN server implementation that ships with the Unreal Engine requires a user name and password, as follows:
"{\"iceServers\":[{\"urls\":[\"stun: 34.250.222.95:19302\",\"turn: 34.250.222.95:19312\"],\"username\":\"<TURN_Username>\",\"credential\":\"<TURN_Password>\"}]}"
Other STUN and TURN implemetations may have different requirements for their credentials.

The value must be formatted as a string, even if you use a JSON configuration file to provide the parameter. Always surround it in double-quotes, and use backslashes to escape any quotes inside the string, as shown above.

HomepageFile

The filename of the default page the server will provide to connecting client browsers that do not request a specific URL.
The default value is player.htm .

AdditionalRoutes

Specifies additional folders that the Signaling and Web Server should serve.
This parameter must be a JSON object, which means you can only provide it in the JSON configuration file, not on the command line.
It must be an object in which each key is a part of a URL, and the value of each key is a local path that the server should serve to requesting clients. For example, if you set:
"AdditionalRoutes" = { "/myfolder", "C:\some_local_path" }
then when a client requests http://server-name/myfolder/index.html the server will provide the file named C:\some_local_path\index.html .

LogToFile

Determines whether the Signaling and Web Server writes log messages to files in the ./logs folder.
The default value is true .

UseHttps

Set this parameter to true in order to make the Signaling Server accept only HTTPS connections on the httpsPort .
You will also need to put your client-key.pem and client-cert.pem files into the certificates folder under the Signaling and Web Server's root folder.

httpsPort

The port to listen to for HTTPS connections. Only used when UseHttps is enabled.
The default value is 443 .

UseMatchmaker

Determines whether the Signaling and Web Server sends its current status to a Matchmaker Server, in order to help client browsers find a Signaling Server and Unreal Engine application that are not currently in use.

matchmakerAddress

The IP address of the Matchmaker Server that the Signaling and Web Server should contact.

matchmakerPort

The port that the Matchmaker Server listens to for incoming messages from Signaling and Web Servers.

configFile

Specifies the path and file name of the configuration file that the Signaling Server should use to retrieve the values of the properties above. Can only be set on the command line.

Matchmaker Server Command-Line Parameters

Provide these parameters on the command line when you start the Matchmaker Server by running its run.bat file, or when you start it by running node.exe matchmaker.js .

Parameter

Description

--httpPort <value>

Sets the port number that the Matchmaker listens to for HTTP connections from clients.
The default value is 90 .

--matchmakerPort <value>

Sets the port number that the Matchmaker listens to for incoming messages from Cirrus signaling servers.
The default value is 9999 .

Help shape the future of Unreal Engine documentation! Tell us how we're doing so we can serve you better.
Take our survey
Dismiss