Skip to content

RTP Bridges Interfere With Connection of Chrome Clients #5

@TravisBowers

Description

@TravisBowers

OS: Windows 10 (Virtualized with libvirt)
UE Engine Version: 4.25.4
GPU: Nvidia 2080 Ti
GPU Driver: 461.72

If an RTP bridge is connected to the cirrus server before Google Chrome tries to connect, the UE4 Application crashes once video begins streaming to Google Chrome. The following sequence of events occur:

  1. Cirrus is started
  2. The pixel streaming UE4 app is started
  3. An RTP bridge is started an connected to Cirrus
  • RTP is being streamed and can be tuned
  1. Google Chrome is started on a remote client
  • navigate to cirrus server URL
  • click start
  • "waiting for video" message appears in Chrome
  • "Play" triangle appears
  • Click play Triangle
  • A single video frame appears in chrome
  1. UE4 App crashes with popup reiterating log output

The log contains the following:

[2021.03.18-21.13.02:006][399]LogThreadingWindows: Error: Runnable thread NvVideoEncoder crashed.
[2021.03.18-21.13.02:007][399]LogWindows: Error: === Critical error: ===
[2021.03.18-21.13.02:007][399]LogWindows: Error: 
[2021.03.18-21.13.02:007][399]LogWindows: Error: Assertion failed: State == EFrameState::Capturing [File:D:/Build/++UE4/Sync/Engine/Source/Runtime/AVEncoder/Private/Microsoft/Windows/NvVideoEncoder.cpp] [Line: 695] 
[2021.03.18-21.13.02:007][399]LogWindows: Error: Buffer 1 : Expected state 2, but found 3
[2021.03.18-21.13.02:007][399]LogWindows: Error: 
[2021.03.18-21.13.02:007][399]LogWindows: Error: 
[2021.03.18-21.13.02:007][399]LogWindows: Error: 
[2021.03.18-21.13.02:007][399]LogWindows: Error: Crash in runnable thread NvVideoEncoder
[2021.03.18-21.13.02:058][402]LogExit: Executing StaticShutdownAfterError
[2021.03.18-21.13.02:058][402]LogWindows: FPlatformMisc::RequestExit(1)
[2021.03.18-21.13.02:058][402]LogCore: Engine exit requested (reason: Win RequestExit)
[2021.03.18-21.13.02:068][403]Log file closed, 03/18/21 17:13:02

If Google Chrome is connected to the cirrus server before the rtp bridge, everything seems to work smoothly. i.e., the following:

  1. Start Cirrus
  2. Start pixel streaming UE4 app
  3. Open google chrome on remote client and begin interactive pixel streaming session.
  4. Start RTP bridge on host
  5. Tune RTP stream on remote client

However, if Google Chrome is disconnected while the RTP bridge remains connected and then a Chrome instance attempts to reconnect, it cannot resume an interactive pixel streaming session until the RTP bridge is disconnected from the Cirrus server. When this occurs, the "click to start" message is displayed on chrome. Once clicked, the "WebRTC connected, waiting for video" message appears until the RTP bridge is terminated. Once the bridge is not longer running, Chrome can be refreshed and an interactive pixel streaming session can resume. At this point, subsequent RTP bridges can be instantiated.

Generally, Google Chrome cannot create a new pixel streaming session if existing RTP bridges are connected to Cirrus. If RTP bridges are connected the first time that a Google Chrome client attempts to connect, the Unreal application will crash.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions