Server Streaming

Is Streaming possible with UE4?

Could you go a little deeper into your requirements? Its not fleshed out enough for me to see what you actually need.

Sending data through streaming is just I’m looking for.

It seems to be possible in the new 4.21: Pixel Streaming | Unreal Engine Documentation

Has anyone managed to stream Unreal application over internet? Local streaming is pretty straightforward and got it running in no time, but internet streaming doesn’t work for me at all.

I don’t know how to solve my issues with pixelstreaming:


Fatal error: [File D:\Build\++UE4\Sync\Engine\Source\Runtime\RenderCore\Private\RenderingThread.cpp] [Line: 826]
Rendering thread exception:
Assertion failed: DllHandle != nullptr [File D:\Build\++UE4\Sync\Engine\Plugins\Experimental\PixelStreaming\Source\PixelStreaming\Private\NvVideoEncoder.cpp] [Line: 782]
Failed to load NvEncode dll


0x00007ff8d3eb8eac KERNELBASE.dll!UnknownFunction ]
0x00007ff7cec05bf6 Test246.exe!FWindowsErrorOutputDevice::Serialize() ]
0x00007ff7ce9ff887 Test246.exe!FOutputDevice::LogfImpl() ]
0x00007ff7ce93bd08 Test246.exe!FDebug::AssertFailed() ]
0x00007ff7ce275939 Test246.exe!FNvVideoEncoder::FNvVideoEncoder() ]
0x00007ff7ce2809a1 Test246.exe!FStreamer::CreateVideoEncoder() ]
0x00007ff7ce277038 Test246.exe!FStreamer::FStreamer() ]
0x00007ff7ce288350 Test246.exe!FPixelStreamingPlugin::OnBackBufferReady_RenderThread() ]
0x00007ff7d0685eda Test246.exe!FSlateRHIRenderer::DrawWindow_RenderThread() ]
0x00007ff7d068b9a1 Test246.exe!TGraphTask<TEnqueueUniqueRenderCommandType<`FSlateRHIRenderer::DrawWindows_Private'::`29'::SlateDrawWindowsCommandName,<lambda_43e86ee7c51f39979e9a39d40b280024> > >::ExecuteTask() ]
0x00007ff7ce7ed6d6 Test246.exe!FNamedTaskThread::ProcessTasksNamedThread() ]
0x00007ff7ce7edbf6 Test246.exe!FNamedTaskThread::ProcessTasksUntilQuit() ]
0x00007ff7d0361db7 Test246.exe!RenderingThreadMain() ]
0x00007ff7d0362227 Test246.exe!FRenderingThread::Run() ]
0x00007ff7cec04f6c Test246.exe!FRunnableThreadWin::Run() ]
0x00007ff7cebf5ab3 Test246.exe!FRunnableThreadWin::GuardedRun() ]
0x00007ff8d43e13d2 KERNEL32.DLL!UnknownFunction ]
0x00007ff8d69a54f4 ntdll.dll!UnknownFunction ]

When I exclude pixestreaming plugin, it works well.
I don’t have any idea …:frowning:

Try grabbing the NV Video Codec SDK: https://developer.nvidia.com/nvidia-video-codec-sdk

Thanks for reply,
I,m a beginner. May I ask you to describe it more ?

PixelStreamer is failing because it cannot load the NVEncode.dll, which apparently comes from the NVidia Video Codec SDK I linked to. If you followed the steps here:

And it’s still failing, you’ll need to download that SDK and copy over that NVEncode.dll to where your game is getting packaged.

I followed the steps but I have problem.
I downloaded the sdk files but I can’t build .sln file because there are many missed functions. and there isn’t any .dll file by default.


 
 Assertion failed: DllHandle != nullptr File **D:\** 

There isn’t any D: drive in my computer.
I also googled nvencode.dll but I found nvencodeapi.dll and nvencodeapi64.dll instead.
May I ask you to tell me what should I do (step by step - I’m a beginner) ?

Any help…?

Hey @anonymous_user_a1bbd7d9 , is it possible that you don’t have an NVIDIA GPU that meets the requirements?

from Unreal Engine Pixel Streaming Reference | Unreal Engine 5.1 Documentation :
Supported Graphics Hardware The computer that runs the Unreal Engine application with the Pixel Streaming Plugin must use NVIDIA GPU hardware that supports Hardware-Accelerated Video Encoding (NVENC). See the matrix of supported devices from NVIDIA.

Hey @osprey.lt, do you have a STUN or TURN server set up and working as suggested in the doc page?

Thanks for reply.
My laptop has 2 graphic cards:
Intel(R) HD Graphics 4000
NVIDIA GEFORCE GT 635M

I don’t know whether pixelstreaming support it or not.

GT635M is Fermi architecture, so it doesn’t look like it’s supported. My assumption is that Pixel Streaming is meant for servers running beefy hardware.

According to NVIDIA’s page, the GeForce 635 is supported, but not the 635M.

@Ro-Su- I tried but failed miserably. Also tried using free stun servers from that list in the docs - didn’t work. Do you, by any chance, have a working signalling server config.json file that I could take a look at? Cause I tried to fill up that file with nescessary stuff but when you run run.bat it just doesn’t show.

So far I do get connection from outside network(mobile for instance) by typing in my public IP:8000 and
I can load player.htm, start stream but it just doesn’t connect. It hangs for a bit saying “Starting connection to server, please wait” and then just stops. Log in the WebRTCproxy window shows this

[2018.11.10-12.33.51:685]: LOG: LogDefault : FClientSession::OnIceGatheringChange : ClientId=103, NewState=kIceGatheringComplete

[2018.11.10-12.34.06:731]: LOG: LogDefault : FClientSession::OnIceConnectionChange : ClientId=103, NewState=kIceConnectionFailed

same happeoinning with everybody.
its just dropping with kIceConnectionFailed.

definatly WebRTCProxy is the reason.
i tried to debug it but source ciode is not present.
https://forums.unrealengine.com/development-discussion/engine-source-github/1557151-missing-source-code-of-libs-used-in-webrtcproxy

any luck so far?

i tried it in aws instance using Start_AWS_WebRTCProxy.bat and runAWS_WithTURN.bat

but no luck. same issue.
any idea?

could it be that something importent was missed to describe in the doc?

ignore plz. i just looked into doc again and figure out what i missed.

its now working over net.

to doc team, i strongly suggest to put some flow diagram and more details about turn server. bcz many of developer with less knowledge on web tech will miss the doc