*************
Features
*************
- Added stat in stats panel to show currently used audio/video codec.
- Added audio bitrate in the stats panel.
- Added toggle in the settings panel to force mono audio.
- Added new info in stats panel to indicate input controlling mode.
- Added Linux platform scripts for the Matchmaker/SFU.
- Added npm commands for signalling server. `npm run $config -- $args` which will work across platforms (`$config` might be `start-signalling-server` and args might be `--debug`)
*************
Bugfixes
*************
- Fix matchmaker taking up to 45 seconds to display a valid server for use.
- Fix regression where all browser audio was mono (default now stereo).
- Fix Linux SFU and Signalling Server scripts not grabbing the public IP correctly.
- Fix linux setup scripts not working when being run from a location that has a space in the path.
- Fix SFU run_cloud.bat tries to call non-existent run.bat.
- Fix being unable to type in console of a streamed application.
- Fix docker scripts running only TURN when we needed both TURN and cirrus.
- Fix docker scripts not starting correctly.
*************
Refactors
*************
- Bash scripts have been refactored for readability.
#rb self
#fyi Mattias.Jansson, Aidan.Possemiers
#preflight https://horde.devtools.epicgames.com/job/628c894f5665463c21effaa9
[CL 20345056 by Luke Bermingham in ue5-main branch]
Refactor player sessions
Fix PixelStreamingAudioComponent had delayed audio.
Fix audio bitrate from Unreal Engine to browser was set to a low default causing compressed audio quality in stream. The new default is now Opus maximum value of 510kb/s.
Fix the Selective Forwarding Unit (SFU) not being added to the Pixel Streaming samples folder for a packaged project
Fix default max bitrate not being high enough to support 4k.
Fix reconnections not autoplaying in the browser.
Add datachannel support to SFU.
Add WebRTC c++ client behaviour to pixel streaming system. This is used for developing unit tests.
Add a unit test that will start streaming, connect a client and check that a data channel message can be sent.
Add the ability for a user to start/stop streaming as needed through the use of PixelStreaming.StartStreaming and PixelStreaming.StopStreaming
Add the ability for the stream resolution to be changed at runtime
Notes: AVEncoder no longer stores a width and height; These properties have been moved to the FVideoEncoderInput. This input is now the source of truth and both AMF and NVENC will adapt their resolution to the input resolution.
#rb luke.bermingham
#fyi mattias.jansson, nick.pace, matthew.cotton, aidan.possemiers, sandor.hadas
#preflight 6204c7aba65a8a28464df03c
#jira none
[CL 18948482 by William Belcher in ue5-main branch]
/?preferSFU which lets the user indicate whether they would like to try to connect to the SFU,
/?ForceTURN which lets the user indicate they will only make a peer connection using a relay candidate (this is useful on Chrome when debugging TURN servers),
/?useMic which lets the user indicate they would like to use their microphone to send audio back into Unreal Engine, which can be then be consumed by a PixelStreamingAudioComponent in the scene.
#rb William.Belcher
[FYI] Mattias.Jansson, Aidan.Possemiers, Matthew.Cotton, Nick.Pace, Michael.Wallace
#preflight trivial
#ROBOMERGE-AUTHOR: luke.bermingham
#ROBOMERGE-SOURCE: CL 18787077 in //UE5/Release-5.0/... via CL 18787080 via CL 18787273
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v903-18687472)
[CL 18787275 by luke bermingham in ue5-main branch]
- Stats can now be queried.
- Stats can be listened to for changes using IPixelStreamingModule::AddAnyStatChangedCallback.
- Web frontend stats/settings cleaned up to reflect only important settings a user can change.
- Removed latency tester in favour of a stats report.
#jira UE-136118
#rb self
[FYI] Aidan.Possemiers, Nick.Pace, Matthew.Cotton, William.Belcher
#preflight 61d24a8921763c62c97d1378
#ROBOMERGE-AUTHOR: luke.bermingham
#ROBOMERGE-SOURCE: CL 18499770 in //UE5/Release-5.0/... via CL 18499772
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v899-18417669)
[CL 18499773 by luke bermingham in ue5-release-engine-test branch]
- Fix for low bitrate when no SFU connected.
- Fix for no stream connection (black stream) when streamer connecting and no simulcast parameters specified.
#JIRA UE-137206
#rb self
[FYI] Nick.Pace, Aidan.Possemiers, Matthew.Cotton
#preflight 61ce4791ad69446e59129eda
#ROBOMERGE-AUTHOR: luke.bermingham
#ROBOMERGE-SOURCE: CL 18498100 in //UE5/Release-5.0/... via CL 18498101
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v899-18417669)
[CL 18498102 by luke bermingham in ue5-release-engine-test branch]
- Improve JS logging with formatting and colouring, removed redundant logs.
- Added url parameter ?ForceTURN because Firefox method of forcing TURN seems problematic and Chrome does not have a method to force TURN.
#JIRA UE-136873
#rb Matthew.Cotton
[FYI] Nick.Pace, Mattias.Jansson, Aidan.Possemiers, Marco.Anastasi
#ROBOMERGE-AUTHOR: luke.bermingham
#ROBOMERGE-SOURCE: CL 18428596 in //UE5/Release-5.0/... via CL 18428600
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v897-18405271)
[CL 18428605 by luke bermingham in ue5-release-engine-test branch]
//UE5/Main/Samples/PixelStreaming/WebServers/SignallingWebServer/...
to //UE5/Release-5.0/Samples/PixelStreaming/WebServers/SignallingWebServer/...
#ROBOMERGE-AUTHOR: luke.bermingham
#ROBOMERGE-SOURCE: CL 18298347 in //UE5/Release-5.0/... via CL 18298353
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v895-18170469)
[CL 18298357 by luke bermingham in ue5-release-engine-test branch]