# Tutorial — Pixel Streaming 2 *Augmented Traveler local tutorial.* Back to [[Unreal — Tutorials]] · build first: [[Tutorial — Packaging Builds for Each Surface]] How to run a figure on a **GPU server** and stream it to a **web browser**, whether on a phone, a school Chromebook or a museum tablet, with **Pixel Streaming 2**. The visitor sees the full-quality (Cine) character without installing anything. > **Draft.** The launch argument names may differ between Pixel Streaming and Pixel Streaming 2. Confirm them in Epic's migration guide on the first test. ## 1. When to use it | Good for | Not good for | |---|---| | School and classroom access (web link, no install) | Crowds of simultaneous users (**one GPU instance per active visitor**, so cost grows with users) | | Showing the Cine character on weak devices | Poor connections (it needs a stable, low-latency link) | | Remote demos to partners and funders | Offline venues | ## 2. The parts ``` Unreal app (packaged, Pixel Streaming 2 plug-in) ⇅ WebRTC video/audio/input Signalling web server "Wilbur" (+ optional SFU) — from Epic's PixelStreamingInfrastructure repo ⇅ Browser frontend (TypeScript library; our own caption/ask UI) ``` - **Pixel Streaming 2** was introduced in 5.5. In 5.8 the original plug-in still ships alongside it, for migration. **We use Pixel Streaming 2 only.** - **Infrastructure** lives at `github.com/EpicGamesExt/PixelStreamingInfrastructure`, with **one branch per engine version**. Use the **UE5.8** branch. ## 3. Local test (one machine) 1. Turn on the **Pixel Streaming 2** plug-in in the project. Package a Development Win64 build. 2. **Clone the infrastructure repo** at the UE5.8 branch. In `SignallingWebServer/platform_scripts/cmd/`, run `setup.bat` once, then `start_with_stun.bat`. 3. **Launch the app** with the streamer URL, for example `-PixelStreamingURL=ws://127.0.0.1:8888 -RenderOffScreen`. *Check the argument name for Pixel Streaming 2.* 4. Open `http://127.0.0.1` in a browser. Click to start, then test the microphone and the push-to-talk button. 5. **Defaults to know:** - streamer port **8888**, player port **80**; - bitrate cap 40 Mb/s; - "stream sharing" was removed; use the **SFU** for one-to-many. ## 4. Our frontend - **Use Epic's TypeScript frontend library** and add our UI: captions, an "Ask" button, a "Pause", and a credit line on the label. - **Microphone:** browsers require HTTPS and a user click before opening the mic. Plan the prompt wording with the accessibility designer. - **Schools:** the classroom endpoint and allowlist are owned by the DevOps engineer ([[Position — DevOps Engineer]]). ## 5. Hosting options | Option | Notes | Link | |---|---|---| | Our own cloud VMs (AWS, Azure, GCP) with GPUs | Most control. The TensorWorks cloud guide covers set-up | https://github.com/TensorWorks/PixelStreamingCloudGuide | | Azure reference architecture | Microsoft's pattern for Unreal Pixel Streaming | https://learn.microsoft.com/sv-se/gaming/azure/reference-architectures/unreal-pixel-streaming-in-azure | | Managed platform (e.g. Arcware) | Fastest to run; per-minute pricing; less control | https://www.arcware.com/cloud | | Epic's hosting and networking guide | STUN/TURN, ports, scaling | https://dev.epicgames.com/documentation/en-us/unreal-engine/hosting-and-networking-guide-for-pixel-streaming-in-unreal-engine | **Budget note:** streaming is paid per GPU-hour. Keep a session limit (for example 10 minutes) and an idle timeout. Put the hosting cost into the next budget revision once a pilot sets real numbers. ## 6. Check before a public link - [ ] HTTPS with a valid certificate; TURN server for school networks - [ ] Session limit and idle timeout; a "busy, try again" page when all instances are in use - [ ] Mic permission flow tested on iPhone Safari, Android Chrome and a Chromebook - [ ] Captions on by default - [ ] Logs contain no audio or personal data beyond what the privacy policy allows ## Sources - Epic, Pixel Streaming 2 overview: https://dev.epicgames.com/documentation/unreal-engine/pixel-streaming-2-overview-in-unreal-engine?lang=en-US - Epic, Getting started with Pixel Streaming: https://dev.epicgames.com/documentation/en-us/unreal-engine/getting-started-with-pixel-streaming-in-unreal-engine - Epic, Pixel Streaming 2 migration guide: https://github.com/EpicGamesExt/PixelStreamingInfrastructure/blob/master/Docs/pixel-streaming-2-migration-guide.md - Epic, PixelStreamingInfrastructure repo: https://github.com/EpicGamesExt/PixelStreamingInfrastructure - Epic, Signalling server README: https://github.com/EpicGamesExt/PixelStreamingInfrastructure/blob/master/SignallingWebServer/README.md - Epic, Hosting and networking guide: https://dev.epicgames.com/documentation/en-us/unreal-engine/hosting-and-networking-guide-for-pixel-streaming-in-unreal-engine - Epic, UE 5.8 release notes (UE Remote uses Pixel Streaming 2): https://dev.epicgames.com/documentation/unreal-engine/unreal-engine-5-8-release-notes?lang=en-US - Full list: [[Sources — 2026-09-19]]