Add native self-hosted instance connection to fluxer_desktop
Trimmed monorepo checkout (fluxer_desktop + packages/voice_engine_v2 + tools/ci) with a "Connect to a Different Server" menu item and popout that lets the desktop app switch to any self-hosted Fluxer instance, plus fixes for well-known discovery on single-domain self-hosted deployments and a false-positive ERR_ABORTED on same-origin client redirects during the switch. Defaults to chat.fluxr.chat and uses an isolated userData directory from the official build.
This commit is contained in:
+287
@@ -0,0 +1,287 @@
|
||||
{
|
||||
"status": "pass",
|
||||
"startedAt": "2026-06-05T20:50:00.568Z",
|
||||
"endedAt": "2026-06-05T20:50:17.383Z",
|
||||
"platform": "linux",
|
||||
"arch": "x64",
|
||||
"config": {
|
||||
"url": "ws://100.79.83.54:17880",
|
||||
"serverApiUrl": "http://100.79.83.54:17880",
|
||||
"apiKey": "devkey",
|
||||
"room": "fluxer-webrtc-harness-92677-28ffd7a4-19ee-49cf-87d1-e31ab80864f4",
|
||||
"externalTokens": false,
|
||||
"publisherIdentity": "fluxer-native-publisher-92677",
|
||||
"secondaryPublisherIdentity": "fluxer-native-publisher-2-92677",
|
||||
"subscriberIdentity": "fluxer-native-subscriber-92677",
|
||||
"required": true,
|
||||
"strict": true,
|
||||
"timeoutMs": 90000,
|
||||
"connectTimeoutMs": 30000,
|
||||
"disconnectTimeoutMs": 10000,
|
||||
"probeTimeoutMs": 1500,
|
||||
"durationMs": 15000,
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"expectedWidth": 1280,
|
||||
"expectedHeight": 720,
|
||||
"fps": 30,
|
||||
"minFpsRatio": 0.9,
|
||||
"maxFrameGapMs": 250,
|
||||
"maxAudioFrameGapMs": 0,
|
||||
"maxAvDriftMs": 0,
|
||||
"maxPacketLoss": null,
|
||||
"requireStableResolution": true,
|
||||
"videoPattern": "fast",
|
||||
"videoInput": "nv12",
|
||||
"subscriberVideoQuality": "high",
|
||||
"screenCodecs": ["h264"],
|
||||
"expectedScreenCodecs": ["h264"],
|
||||
"codec": "h264",
|
||||
"expectedScreenCodec": "video/H264",
|
||||
"secondaryPublisher": false,
|
||||
"secondaryPublisherCodec": "h264",
|
||||
"secondaryPublisherCodecExplicit": false,
|
||||
"expectedSecondaryPublisherCodec": "video/H264",
|
||||
"expectedSecondaryPublisherCodecExplicit": false,
|
||||
"screenSimulcast": false,
|
||||
"secondaryPublisherScreenSimulcast": false,
|
||||
"adaptiveSend": true,
|
||||
"minVideoFps": 15,
|
||||
"minResolutionScale": 0.5,
|
||||
"maxAudioBufferMs": 750,
|
||||
"secondaryPublisherMicrophone": false,
|
||||
"secondaryPublisherScreenAudio": false,
|
||||
"maxBitrateBps": 400000,
|
||||
"sampleRate": 48000,
|
||||
"channels": 1,
|
||||
"audioChunkMs": 20,
|
||||
"microphone": false,
|
||||
"screenAudio": false,
|
||||
"dataPacket": false,
|
||||
"subscriptionCycle": false,
|
||||
"validateServerPublishing": true,
|
||||
"camera": false,
|
||||
"cameraDeviceId": null,
|
||||
"expectedCameraCodec": null,
|
||||
"expectedHardwareEncoder": null,
|
||||
"reportPath": "/home/hampus/Development/fluxer/fluxer_desktop/native-media-reports/cachyos-nvidia-livekit-720p-h264-20260605T204959Z.json",
|
||||
"verbose": false,
|
||||
"scenarioName": "codec-h264",
|
||||
"apiSecret": "<redacted>",
|
||||
"e2eeKey": null,
|
||||
"publisherToken": null,
|
||||
"secondaryPublisherToken": null,
|
||||
"subscriberToken": null
|
||||
},
|
||||
"checks": [
|
||||
{
|
||||
"name": "publisher connected",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber connected",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher local screenshare publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote screenshare subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video frames >= 3",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber video frame callback",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screenshare stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video stats count >= 1",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber video resolution 1280x720",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screenshare codec video/H264",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video codec video/H264",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "server publishing API participants listed",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "server sees publisher screenshare publication",
|
||||
"pass": true
|
||||
}
|
||||
],
|
||||
"skippedReason": null,
|
||||
"error": null,
|
||||
"hardwareEncoder": {
|
||||
"available": false,
|
||||
"backend": "none",
|
||||
"compiled": true,
|
||||
"runtime": false,
|
||||
"codecs": [],
|
||||
"zeroCopy": false,
|
||||
"nativeInputs": [],
|
||||
"reason": "no_supported_devices",
|
||||
"detail": "missing NVENC encode session (checked 1 CUDA device; last status NV_ENC_ERR_UNSUPPORTED_DEVICE (2))"
|
||||
},
|
||||
"metrics": {
|
||||
"inboundAudioFrames": 0,
|
||||
"inboundVideoFrames": 465,
|
||||
"strictAudioFrames": 0,
|
||||
"strictVideoFrames": 435,
|
||||
"videoCallbacks": 463,
|
||||
"videoBytes": 640051200,
|
||||
"receivedFps": 28.99,
|
||||
"requiredFps": 27,
|
||||
"maxVideoFrameGapMs": 68,
|
||||
"maxAudioFrameGapMs": 0,
|
||||
"maxVideoFrameGapOverallMs": 68,
|
||||
"maxAudioFrameGapOverallMs": 0,
|
||||
"avDriftMs": null,
|
||||
"maxObservedPacketLoss": 0,
|
||||
"maxObservedPacketLossDelta": 0,
|
||||
"videoResolutionCounts": {
|
||||
"1280x720": 435
|
||||
},
|
||||
"videoResolutionMismatchCount": 0,
|
||||
"droppedVideoFrameCallbacks": 0,
|
||||
"publisherVideoPump": {
|
||||
"input": "nv12",
|
||||
"pattern": "fast",
|
||||
"targetFps": 30,
|
||||
"startedAtMs": 1780692601312,
|
||||
"stoppedAtMs": null,
|
||||
"framesPushed": 483,
|
||||
"framesRejected": 0,
|
||||
"errors": 0,
|
||||
"maxPushGapMs": 37,
|
||||
"lastPushAtMs": 1780692617378,
|
||||
"elapsedMs": 16227,
|
||||
"producedFps": 29.77
|
||||
},
|
||||
"secondaryPublisherVideoPump": null,
|
||||
"serverPublishing": {
|
||||
"fetchedAtMs": 1780692602380,
|
||||
"error": null,
|
||||
"participants": [
|
||||
{
|
||||
"identity": "fluxer-native-publisher-92677",
|
||||
"trackCount": 1,
|
||||
"tracks": [
|
||||
{
|
||||
"sid": "TR_VStBVT57Q9oKAa",
|
||||
"name": "screen",
|
||||
"kind": "video",
|
||||
"source": "screenshare",
|
||||
"mimeType": "video/H264",
|
||||
"muted": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"identity": "fluxer-native-subscriber-92677",
|
||||
"trackCount": 0,
|
||||
"tracks": []
|
||||
}
|
||||
]
|
||||
},
|
||||
"lastVideoMeta": {
|
||||
"participantSid": "PA_89hNCmrznA6A",
|
||||
"trackSid": "TR_VStBVT57Q9oKAa",
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"timestampUs": 68521962000
|
||||
},
|
||||
"publisherStats": {
|
||||
"rttMs": 4,
|
||||
"outbound": [
|
||||
{
|
||||
"trackSid": "TR_VStBVT57Q9oKAa",
|
||||
"source": "screenshare",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 386.9,
|
||||
"packetsLost": 0,
|
||||
"fps": 30,
|
||||
"codec": "video/H264"
|
||||
}
|
||||
],
|
||||
"inbound": [],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 0,
|
||||
"outgoingVideoFramesProduced": 476,
|
||||
"outgoingVideoFramesAccepted": 476,
|
||||
"outgoingVideoFramesDropped": 16,
|
||||
"outgoingVideoFramesCoalesced": 16,
|
||||
"outgoingVideoFramesCaptured": 460,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 28.97,
|
||||
"outgoingVideoTargetFps": 30,
|
||||
"outgoingVideoMaxQueueAgeMs": 34,
|
||||
"outgoingVideoMaxPushLatencyMs": 34,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 0,
|
||||
"adaptiveSendTier": "full",
|
||||
"adaptiveSendReason": "stable"
|
||||
}
|
||||
},
|
||||
"secondaryPublisherStats": null,
|
||||
"subscriberStats": {
|
||||
"rttMs": 5,
|
||||
"outbound": [],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_89hNCmrznA6A",
|
||||
"trackSid": "TR_VStBVT57Q9oKAa",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 386.4,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 2,
|
||||
"codec": "video/H264"
|
||||
}
|
||||
],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 0,
|
||||
"outgoingVideoFramesProduced": 0,
|
||||
"outgoingVideoFramesAccepted": 0,
|
||||
"outgoingVideoFramesDropped": 0,
|
||||
"outgoingVideoFramesCoalesced": 0,
|
||||
"outgoingVideoFramesCaptured": 0,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 0,
|
||||
"outgoingVideoTargetFps": 0,
|
||||
"outgoingVideoMaxQueueAgeMs": 0,
|
||||
"outgoingVideoMaxPushLatencyMs": 0,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 0,
|
||||
"adaptiveSendTier": "idle",
|
||||
"adaptiveSendReason": "notPublishing"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+287
@@ -0,0 +1,287 @@
|
||||
{
|
||||
"status": "fail",
|
||||
"startedAt": "2026-06-05T20:50:29.534Z",
|
||||
"endedAt": "2026-06-05T20:52:00.423Z",
|
||||
"platform": "linux",
|
||||
"arch": "x64",
|
||||
"config": {
|
||||
"url": "ws://100.79.83.54:17880",
|
||||
"serverApiUrl": "http://100.79.83.54:17880",
|
||||
"apiKey": "devkey",
|
||||
"room": "fluxer-webrtc-harness-92838-08153292-483f-4acb-b470-af9847d7597c",
|
||||
"externalTokens": false,
|
||||
"publisherIdentity": "fluxer-native-publisher-92838",
|
||||
"secondaryPublisherIdentity": "fluxer-native-publisher-2-92838",
|
||||
"subscriberIdentity": "fluxer-native-subscriber-92838",
|
||||
"required": true,
|
||||
"strict": true,
|
||||
"timeoutMs": 90000,
|
||||
"connectTimeoutMs": 30000,
|
||||
"disconnectTimeoutMs": 10000,
|
||||
"probeTimeoutMs": 1500,
|
||||
"durationMs": 15000,
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"expectedWidth": 1280,
|
||||
"expectedHeight": 720,
|
||||
"fps": 30,
|
||||
"minFpsRatio": 0.9,
|
||||
"maxFrameGapMs": 250,
|
||||
"maxAudioFrameGapMs": 0,
|
||||
"maxAvDriftMs": 0,
|
||||
"maxPacketLoss": null,
|
||||
"requireStableResolution": true,
|
||||
"videoPattern": "fast",
|
||||
"videoInput": "nv12",
|
||||
"subscriberVideoQuality": "high",
|
||||
"screenCodecs": ["hevc"],
|
||||
"expectedScreenCodecs": ["hevc"],
|
||||
"codec": "hevc",
|
||||
"expectedScreenCodec": "video/H265",
|
||||
"secondaryPublisher": false,
|
||||
"secondaryPublisherCodec": "hevc",
|
||||
"secondaryPublisherCodecExplicit": false,
|
||||
"expectedSecondaryPublisherCodec": "video/H265",
|
||||
"expectedSecondaryPublisherCodecExplicit": false,
|
||||
"screenSimulcast": false,
|
||||
"secondaryPublisherScreenSimulcast": false,
|
||||
"adaptiveSend": true,
|
||||
"minVideoFps": 15,
|
||||
"minResolutionScale": 0.5,
|
||||
"maxAudioBufferMs": 750,
|
||||
"secondaryPublisherMicrophone": false,
|
||||
"secondaryPublisherScreenAudio": false,
|
||||
"maxBitrateBps": 400000,
|
||||
"sampleRate": 48000,
|
||||
"channels": 1,
|
||||
"audioChunkMs": 20,
|
||||
"microphone": false,
|
||||
"screenAudio": false,
|
||||
"dataPacket": false,
|
||||
"subscriptionCycle": false,
|
||||
"validateServerPublishing": true,
|
||||
"camera": false,
|
||||
"cameraDeviceId": null,
|
||||
"expectedCameraCodec": null,
|
||||
"expectedHardwareEncoder": null,
|
||||
"reportPath": "/home/hampus/Development/fluxer/fluxer_desktop/native-media-reports/cachyos-nvidia-livekit-720p-hevc-20260605T205028Z.json",
|
||||
"verbose": false,
|
||||
"scenarioName": "codec-hevc",
|
||||
"apiSecret": "<redacted>",
|
||||
"e2eeKey": null,
|
||||
"publisherToken": null,
|
||||
"secondaryPublisherToken": null,
|
||||
"subscriberToken": null
|
||||
},
|
||||
"checks": [
|
||||
{
|
||||
"name": "publisher connected",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber connected",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher local screenshare publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote screenshare subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video frames >= 3",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber video frame callback",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screenshare stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video stats count >= 1",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber video resolution 1280x720",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screenshare codec video/H265",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video codec video/H265",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "server publishing API participants listed",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "server sees publisher screenshare publication",
|
||||
"pass": false
|
||||
}
|
||||
],
|
||||
"skippedReason": null,
|
||||
"error": "Error: timed out after 90000ms waiting for: publisher outbound screenshare codec video/H265, subscriber inbound video codec video/H265, server sees publisher screenshare publication\n at waitForHarnessSuccess (file:///home/hampus/Development/fluxer/fluxer_desktop/native/webrtc-sender/scripts/livekit-harness.mjs:1329:8)\n at async runHarness (file:///home/hampus/Development/fluxer/fluxer_desktop/native/webrtc-sender/scripts/livekit-harness.mjs:1926:18)\n at async main (file:///home/hampus/Development/fluxer/fluxer_desktop/native/webrtc-sender/scripts/livekit-harness.mjs:2026:18)\n at async file:///home/hampus/Development/fluxer/fluxer_desktop/native/webrtc-sender/scripts/livekit-harness.mjs:2059:19",
|
||||
"hardwareEncoder": {
|
||||
"available": false,
|
||||
"backend": "none",
|
||||
"compiled": true,
|
||||
"runtime": false,
|
||||
"codecs": [],
|
||||
"zeroCopy": false,
|
||||
"nativeInputs": [],
|
||||
"reason": "no_supported_devices",
|
||||
"detail": "missing NVENC encode session (checked 1 CUDA device; last status NV_ENC_ERR_UNSUPPORTED_DEVICE (2))"
|
||||
},
|
||||
"metrics": {
|
||||
"inboundAudioFrames": 0,
|
||||
"inboundVideoFrames": 2611,
|
||||
"strictAudioFrames": 0,
|
||||
"strictVideoFrames": 2610,
|
||||
"videoCallbacks": 2610,
|
||||
"videoBytes": 3608064000,
|
||||
"receivedFps": 29.02,
|
||||
"requiredFps": 27,
|
||||
"maxVideoFrameGapMs": 81,
|
||||
"maxAudioFrameGapMs": 0,
|
||||
"maxVideoFrameGapOverallMs": 81,
|
||||
"maxAudioFrameGapOverallMs": 0,
|
||||
"avDriftMs": null,
|
||||
"maxObservedPacketLoss": 0,
|
||||
"maxObservedPacketLossDelta": 0,
|
||||
"videoResolutionCounts": {
|
||||
"1280x720": 2610
|
||||
},
|
||||
"videoResolutionMismatchCount": 0,
|
||||
"droppedVideoFrameCallbacks": 0,
|
||||
"publisherVideoPump": {
|
||||
"input": "nv12",
|
||||
"pattern": "fast",
|
||||
"targetFps": 30,
|
||||
"startedAtMs": 1780692630259,
|
||||
"stoppedAtMs": null,
|
||||
"framesPushed": 2705,
|
||||
"framesRejected": 0,
|
||||
"errors": 0,
|
||||
"maxPushGapMs": 37,
|
||||
"lastPushAtMs": 1780692720392,
|
||||
"elapsedMs": 90321,
|
||||
"producedFps": 29.95
|
||||
},
|
||||
"secondaryPublisherVideoPump": null,
|
||||
"serverPublishing": {
|
||||
"fetchedAtMs": 1780692720171,
|
||||
"error": null,
|
||||
"participants": [
|
||||
{
|
||||
"identity": "fluxer-native-subscriber-92838",
|
||||
"trackCount": 0,
|
||||
"tracks": []
|
||||
},
|
||||
{
|
||||
"identity": "fluxer-native-publisher-92838",
|
||||
"trackCount": 1,
|
||||
"tracks": [
|
||||
{
|
||||
"sid": "TR_VSr7CavPmttCck",
|
||||
"name": "screen",
|
||||
"kind": "video",
|
||||
"source": "screenshare",
|
||||
"mimeType": "video/VP8",
|
||||
"muted": false
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"lastVideoMeta": {
|
||||
"participantSid": "PA_eQVNaBPkxUPX",
|
||||
"trackSid": "TR_VSr7CavPmttCck",
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"timestampUs": 68625011000
|
||||
},
|
||||
"publisherStats": {
|
||||
"rttMs": 6,
|
||||
"outbound": [
|
||||
{
|
||||
"trackSid": "TR_VSr7CavPmttCck",
|
||||
"source": "screenshare",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 44.7,
|
||||
"packetsLost": 0,
|
||||
"fps": 29,
|
||||
"codec": "video/VP8"
|
||||
}
|
||||
],
|
||||
"inbound": [],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 1,
|
||||
"outgoingVideoFramesProduced": 2697,
|
||||
"outgoingVideoFramesAccepted": 2697,
|
||||
"outgoingVideoFramesDropped": 91,
|
||||
"outgoingVideoFramesCoalesced": 91,
|
||||
"outgoingVideoFramesCaptured": 2605,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 28.98,
|
||||
"outgoingVideoTargetFps": 30,
|
||||
"outgoingVideoMaxQueueAgeMs": 34,
|
||||
"outgoingVideoMaxPushLatencyMs": 34,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 0,
|
||||
"adaptiveSendTier": "full",
|
||||
"adaptiveSendReason": "stable"
|
||||
}
|
||||
},
|
||||
"secondaryPublisherStats": null,
|
||||
"subscriberStats": {
|
||||
"rttMs": 6,
|
||||
"outbound": [],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_eQVNaBPkxUPX",
|
||||
"trackSid": "TR_VSr7CavPmttCck",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 43.1,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 3,
|
||||
"codec": "video/VP8"
|
||||
}
|
||||
],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 0,
|
||||
"outgoingVideoFramesProduced": 0,
|
||||
"outgoingVideoFramesAccepted": 0,
|
||||
"outgoingVideoFramesDropped": 0,
|
||||
"outgoingVideoFramesCoalesced": 0,
|
||||
"outgoingVideoFramesCaptured": 0,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 0,
|
||||
"outgoingVideoTargetFps": 0,
|
||||
"outgoingVideoMaxQueueAgeMs": 0,
|
||||
"outgoingVideoMaxPushLatencyMs": 0,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 0,
|
||||
"adaptiveSendTier": "idle",
|
||||
"adaptiveSendReason": "notPublishing"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+226
@@ -0,0 +1,226 @@
|
||||
{
|
||||
"status": "fail",
|
||||
"startedAt": "2026-06-05T20:56:44.980Z",
|
||||
"endedAt": "2026-06-05T20:56:45.769Z",
|
||||
"platform": "linux",
|
||||
"arch": "x64",
|
||||
"config": {
|
||||
"url": "ws://100.79.83.54:17880",
|
||||
"serverApiUrl": "http://100.79.83.54:17880",
|
||||
"apiKey": "devkey",
|
||||
"room": "fluxer-webrtc-harness-94317-ce85bdff-9476-465a-9f9a-fae49f6c168d",
|
||||
"externalTokens": false,
|
||||
"publisherIdentity": "fluxer-native-publisher-94317",
|
||||
"secondaryPublisherIdentity": "fluxer-native-publisher-2-94317",
|
||||
"subscriberIdentity": "fluxer-native-subscriber-94317",
|
||||
"required": true,
|
||||
"strict": true,
|
||||
"timeoutMs": 90000,
|
||||
"connectTimeoutMs": 30000,
|
||||
"disconnectTimeoutMs": 10000,
|
||||
"probeTimeoutMs": 1500,
|
||||
"durationMs": 15000,
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"expectedWidth": 1280,
|
||||
"expectedHeight": 720,
|
||||
"fps": 30,
|
||||
"minFpsRatio": 0.9,
|
||||
"maxFrameGapMs": 250,
|
||||
"maxAudioFrameGapMs": 0,
|
||||
"maxAvDriftMs": 0,
|
||||
"maxPacketLoss": null,
|
||||
"requireStableResolution": true,
|
||||
"videoPattern": "fast",
|
||||
"videoInput": "nv12",
|
||||
"subscriberVideoQuality": "high",
|
||||
"screenCodecs": ["hevc"],
|
||||
"expectedScreenCodecs": ["hevc"],
|
||||
"codec": "hevc",
|
||||
"expectedScreenCodec": "video/H265",
|
||||
"secondaryPublisher": false,
|
||||
"secondaryPublisherCodec": "hevc",
|
||||
"secondaryPublisherCodecExplicit": false,
|
||||
"expectedSecondaryPublisherCodec": "video/H265",
|
||||
"expectedSecondaryPublisherCodecExplicit": false,
|
||||
"screenSimulcast": false,
|
||||
"secondaryPublisherScreenSimulcast": false,
|
||||
"adaptiveSend": true,
|
||||
"minVideoFps": 15,
|
||||
"minResolutionScale": 0.5,
|
||||
"maxAudioBufferMs": 750,
|
||||
"secondaryPublisherMicrophone": false,
|
||||
"secondaryPublisherScreenAudio": false,
|
||||
"maxBitrateBps": 400000,
|
||||
"sampleRate": 48000,
|
||||
"channels": 1,
|
||||
"audioChunkMs": 20,
|
||||
"microphone": false,
|
||||
"screenAudio": false,
|
||||
"dataPacket": false,
|
||||
"subscriptionCycle": false,
|
||||
"validateServerPublishing": true,
|
||||
"camera": false,
|
||||
"cameraDeviceId": null,
|
||||
"expectedCameraCodec": null,
|
||||
"expectedHardwareEncoder": null,
|
||||
"reportPath": "/home/hampus/Development/fluxer/fluxer_desktop/native-media-reports/cachyos-nvidia-livekit-720p-hevc-failfast-20260605T205643Z.json",
|
||||
"verbose": false,
|
||||
"scenarioName": "codec-hevc",
|
||||
"apiSecret": "<redacted>",
|
||||
"e2eeKey": null,
|
||||
"publisherToken": null,
|
||||
"secondaryPublisherToken": null,
|
||||
"subscriberToken": null
|
||||
},
|
||||
"checks": [
|
||||
{
|
||||
"name": "publisher connected",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber connected",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher local screenshare publication",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote screenshare subscription",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video frames >= 3",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber video frame callback",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screenshare stats",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video stats",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video stats count >= 1",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber video resolution 1280x720",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screenshare codec video/H265",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video codec video/H265",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "server publishing API participants listed",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "server sees publisher screenshare publication",
|
||||
"pass": false
|
||||
}
|
||||
],
|
||||
"skippedReason": null,
|
||||
"error": "Error: H.265 publishing requires hardware encoder support; missing NVENC encode session (checked 1 CUDA device; last status NV_ENC_ERR_UNSUPPORTED_DEVICE (2))",
|
||||
"hardwareEncoder": {
|
||||
"available": false,
|
||||
"backend": "none",
|
||||
"compiled": true,
|
||||
"runtime": false,
|
||||
"codecs": [],
|
||||
"zeroCopy": false,
|
||||
"nativeInputs": [],
|
||||
"reason": "no_supported_devices",
|
||||
"detail": "missing NVENC encode session (checked 1 CUDA device; last status NV_ENC_ERR_UNSUPPORTED_DEVICE (2))"
|
||||
},
|
||||
"metrics": {
|
||||
"inboundAudioFrames": 0,
|
||||
"inboundVideoFrames": 0,
|
||||
"strictAudioFrames": 0,
|
||||
"strictVideoFrames": 0,
|
||||
"videoCallbacks": 0,
|
||||
"videoBytes": 0,
|
||||
"receivedFps": 0,
|
||||
"requiredFps": 27,
|
||||
"maxVideoFrameGapMs": 0,
|
||||
"maxAudioFrameGapMs": 0,
|
||||
"maxVideoFrameGapOverallMs": 0,
|
||||
"maxAudioFrameGapOverallMs": 0,
|
||||
"avDriftMs": null,
|
||||
"maxObservedPacketLoss": 0,
|
||||
"maxObservedPacketLossDelta": 0,
|
||||
"videoResolutionCounts": {},
|
||||
"videoResolutionMismatchCount": 0,
|
||||
"droppedVideoFrameCallbacks": 0,
|
||||
"publisherVideoPump": null,
|
||||
"secondaryPublisherVideoPump": null,
|
||||
"serverPublishing": {
|
||||
"fetchedAtMs": null,
|
||||
"error": null,
|
||||
"participants": []
|
||||
},
|
||||
"lastVideoMeta": null,
|
||||
"publisherStats": {
|
||||
"rttMs": null,
|
||||
"outbound": [],
|
||||
"inbound": [],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 0,
|
||||
"outgoingVideoFramesProduced": 0,
|
||||
"outgoingVideoFramesAccepted": 0,
|
||||
"outgoingVideoFramesDropped": 0,
|
||||
"outgoingVideoFramesCoalesced": 0,
|
||||
"outgoingVideoFramesCaptured": 0,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 0,
|
||||
"outgoingVideoTargetFps": 0,
|
||||
"outgoingVideoMaxQueueAgeMs": 0,
|
||||
"outgoingVideoMaxPushLatencyMs": 0,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 0,
|
||||
"adaptiveSendTier": "idle",
|
||||
"adaptiveSendReason": "notPublishing"
|
||||
}
|
||||
},
|
||||
"secondaryPublisherStats": null,
|
||||
"subscriberStats": {
|
||||
"rttMs": null,
|
||||
"outbound": [],
|
||||
"inbound": [],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 0,
|
||||
"outgoingVideoFramesProduced": 0,
|
||||
"outgoingVideoFramesAccepted": 0,
|
||||
"outgoingVideoFramesDropped": 0,
|
||||
"outgoingVideoFramesCoalesced": 0,
|
||||
"outgoingVideoFramesCaptured": 0,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 0,
|
||||
"outgoingVideoTargetFps": 0,
|
||||
"outgoingVideoMaxQueueAgeMs": 0,
|
||||
"outgoingVideoMaxPushLatencyMs": 0,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 0,
|
||||
"adaptiveSendTier": "idle",
|
||||
"adaptiveSendReason": "notPublishing"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+637
@@ -0,0 +1,637 @@
|
||||
{
|
||||
"status": "pass",
|
||||
"startedAt": "2026-06-05T20:57:06.276Z",
|
||||
"endedAt": "2026-06-05T20:57:28.255Z",
|
||||
"platform": "linux",
|
||||
"arch": "x64",
|
||||
"config": {
|
||||
"url": "ws://100.79.83.54:17880",
|
||||
"serverApiUrl": "http://100.79.83.54:17880",
|
||||
"apiKey": "devkey",
|
||||
"room": "fluxer-webrtc-harness-94553-a59031d7-277a-4d31-a290-59cea2c79f1c",
|
||||
"externalTokens": false,
|
||||
"publisherIdentity": "fluxer-native-publisher-94553",
|
||||
"secondaryPublisherIdentity": "fluxer-native-publisher-2-94553",
|
||||
"subscriberIdentity": "fluxer-native-subscriber-94553",
|
||||
"required": true,
|
||||
"strict": true,
|
||||
"timeoutMs": 90000,
|
||||
"connectTimeoutMs": 30000,
|
||||
"disconnectTimeoutMs": 10000,
|
||||
"probeTimeoutMs": 1500,
|
||||
"durationMs": 20000,
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"expectedWidth": 1280,
|
||||
"expectedHeight": 720,
|
||||
"fps": 30,
|
||||
"minFpsRatio": 0.9,
|
||||
"maxFrameGapMs": 250,
|
||||
"maxAudioFrameGapMs": 250,
|
||||
"maxAvDriftMs": 150,
|
||||
"maxPacketLoss": null,
|
||||
"requireStableResolution": true,
|
||||
"videoPattern": "fast",
|
||||
"videoInput": "nv12",
|
||||
"subscriberVideoQuality": "high",
|
||||
"screenCodecs": ["h264"],
|
||||
"expectedScreenCodecs": ["h264"],
|
||||
"codec": "h264",
|
||||
"expectedScreenCodec": "video/H264",
|
||||
"secondaryPublisher": true,
|
||||
"secondaryPublisherCodec": "vp8",
|
||||
"secondaryPublisherCodecExplicit": true,
|
||||
"expectedSecondaryPublisherCodec": "video/VP8",
|
||||
"expectedSecondaryPublisherCodecExplicit": true,
|
||||
"screenSimulcast": false,
|
||||
"secondaryPublisherScreenSimulcast": false,
|
||||
"adaptiveSend": true,
|
||||
"minVideoFps": 15,
|
||||
"minResolutionScale": 0.5,
|
||||
"maxAudioBufferMs": 750,
|
||||
"secondaryPublisherMicrophone": true,
|
||||
"secondaryPublisherScreenAudio": true,
|
||||
"maxBitrateBps": 400000,
|
||||
"sampleRate": 48000,
|
||||
"channels": 1,
|
||||
"audioChunkMs": 20,
|
||||
"microphone": true,
|
||||
"screenAudio": true,
|
||||
"dataPacket": true,
|
||||
"subscriptionCycle": false,
|
||||
"validateServerPublishing": true,
|
||||
"camera": false,
|
||||
"cameraDeviceId": null,
|
||||
"expectedCameraCodec": null,
|
||||
"expectedHardwareEncoder": null,
|
||||
"reportPath": "/home/hampus/Development/fluxer/fluxer_desktop/native-media-reports/cachyos-nvidia-livekit-alltracks-serverpub-mixed-20260605T205705Z.json",
|
||||
"verbose": false,
|
||||
"scenarioName": "codec-h264-with-vp8",
|
||||
"apiSecret": "<redacted>",
|
||||
"e2eeKey": null,
|
||||
"publisherToken": null,
|
||||
"secondaryPublisherToken": null,
|
||||
"subscriberToken": null
|
||||
},
|
||||
"checks": [
|
||||
{
|
||||
"name": "publisher connected",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber connected",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher local screenshare publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote screenshare subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video frames >= 6",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber video frame callback",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screenshare stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video stats count >= 2",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber video resolution 1280x720",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber aggregate inbound audio frames >= 12",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio stats count >= 4",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher local microphone publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote microphone subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio frames >= 12",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound microphone stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher local screen-share audio publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote screen-share audio subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screen-share audio stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher connected",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher local screenshare publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote secondary screenshare subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher outbound screenshare stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher outbound screenshare codec video/VP8",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound secondary codec video/VP8",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher local microphone publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote secondary microphone subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher outbound microphone stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher local screen-share audio publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote secondary screen-share audio subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher outbound screen-share audio stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber data packet received",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber secondary data packet received",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screenshare codec video/H264",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video codec video/H264",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "server publishing API participants listed",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "server sees publisher screenshare publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "server sees publisher microphone publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "server sees publisher screen-share audio publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "server sees secondary publisher screenshare publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "server sees secondary publisher microphone publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "server sees secondary publisher screen-share audio publication",
|
||||
"pass": true
|
||||
}
|
||||
],
|
||||
"skippedReason": null,
|
||||
"error": null,
|
||||
"hardwareEncoder": {
|
||||
"available": false,
|
||||
"backend": "none",
|
||||
"compiled": true,
|
||||
"runtime": false,
|
||||
"codecs": [],
|
||||
"zeroCopy": false,
|
||||
"nativeInputs": [],
|
||||
"reason": "no_supported_devices",
|
||||
"detail": "missing NVENC encode session (checked 1 CUDA device; last status NV_ENC_ERR_UNSUPPORTED_DEVICE (2))"
|
||||
},
|
||||
"metrics": {
|
||||
"inboundAudioFrames": 8352,
|
||||
"inboundVideoFrames": 1182,
|
||||
"strictAudioFrames": 200,
|
||||
"strictVideoFrames": 1164,
|
||||
"videoCallbacks": 1180,
|
||||
"videoBytes": 1631232000,
|
||||
"receivedFps": 58.16,
|
||||
"requiredFps": 27,
|
||||
"maxVideoFrameGapMs": 98,
|
||||
"maxAudioFrameGapMs": 101,
|
||||
"maxVideoFrameGapOverallMs": 98,
|
||||
"maxAudioFrameGapOverallMs": 101,
|
||||
"avDriftMs": 36,
|
||||
"maxObservedPacketLoss": 0,
|
||||
"maxObservedPacketLossDelta": 0,
|
||||
"videoResolutionCounts": {
|
||||
"1280x720": 1164
|
||||
},
|
||||
"videoResolutionMismatchCount": 0,
|
||||
"droppedVideoFrameCallbacks": 0,
|
||||
"publisherVideoPump": {
|
||||
"input": "nv12",
|
||||
"pattern": "fast",
|
||||
"targetFps": 30,
|
||||
"startedAtMs": 1780693027399,
|
||||
"stoppedAtMs": null,
|
||||
"framesPushed": 626,
|
||||
"framesRejected": 0,
|
||||
"errors": 0,
|
||||
"maxPushGapMs": 39,
|
||||
"lastPushAtMs": 1780693048233,
|
||||
"elapsedMs": 21015,
|
||||
"producedFps": 29.79
|
||||
},
|
||||
"secondaryPublisherVideoPump": {
|
||||
"input": "nv12",
|
||||
"pattern": "fast",
|
||||
"targetFps": 30,
|
||||
"startedAtMs": 1780693027400,
|
||||
"stoppedAtMs": null,
|
||||
"framesPushed": 626,
|
||||
"framesRejected": 0,
|
||||
"errors": 0,
|
||||
"maxPushGapMs": 40,
|
||||
"lastPushAtMs": 1780693048233,
|
||||
"elapsedMs": 21014,
|
||||
"producedFps": 29.79
|
||||
},
|
||||
"serverPublishing": {
|
||||
"fetchedAtMs": 1780693027997,
|
||||
"error": null,
|
||||
"participants": [
|
||||
{
|
||||
"identity": "fluxer-native-publisher-94553",
|
||||
"trackCount": 3,
|
||||
"tracks": [
|
||||
{
|
||||
"sid": "TR_AsXuPkpunfLw9E",
|
||||
"name": "screen-audio",
|
||||
"kind": "audio",
|
||||
"source": "screenshareAudio",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_VStW6iBWUPJvYp",
|
||||
"name": "screen",
|
||||
"kind": "video",
|
||||
"source": "screenshare",
|
||||
"mimeType": "video/H264",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_AMraWSQbYVLoud",
|
||||
"name": "mic",
|
||||
"kind": "audio",
|
||||
"source": "microphone",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"identity": "fluxer-native-subscriber-94553",
|
||||
"trackCount": 0,
|
||||
"tracks": []
|
||||
},
|
||||
{
|
||||
"identity": "fluxer-native-publisher-2-94553",
|
||||
"trackCount": 3,
|
||||
"tracks": [
|
||||
{
|
||||
"sid": "TR_VSDUf6mLBmkksq",
|
||||
"name": "screen",
|
||||
"kind": "video",
|
||||
"source": "screenshare",
|
||||
"mimeType": "video/VP8",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_AMuo9vvgBhxrxp",
|
||||
"name": "mic",
|
||||
"kind": "audio",
|
||||
"source": "microphone",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_Asf2caReF2dUoe",
|
||||
"name": "screen-audio",
|
||||
"kind": "audio",
|
||||
"source": "screenshareAudio",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"lastVideoMeta": {
|
||||
"participantSid": "PA_sFVVyQMPfG8Z",
|
||||
"trackSid": "TR_VSDUf6mLBmkksq",
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"timestampUs": 68952853000
|
||||
},
|
||||
"publisherStats": {
|
||||
"rttMs": 15,
|
||||
"outbound": [
|
||||
{
|
||||
"trackSid": "TR_VStW6iBWUPJvYp",
|
||||
"source": "screenshare",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 399.8,
|
||||
"packetsLost": 0,
|
||||
"fps": 29,
|
||||
"codec": "video/H264"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_AsXuPkpunfLw9E",
|
||||
"source": "screenshareAudio",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 258.9,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_AMraWSQbYVLoud",
|
||||
"source": "microphone",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 97.8,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
}
|
||||
],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_sFVVyQMPfG8Z",
|
||||
"trackSid": "TR_AMuo9vvgBhxrxp",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 104.8,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 3,
|
||||
"audioLevel": 0.307,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_sFVVyQMPfG8Z",
|
||||
"trackSid": "TR_Asf2caReF2dUoe",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 274.6,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 2,
|
||||
"audioLevel": 0.307,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_sFVVyQMPfG8Z",
|
||||
"trackSid": "TR_VSDUf6mLBmkksq",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 31.6,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 5,
|
||||
"codec": "video/VP8"
|
||||
}
|
||||
],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 0,
|
||||
"outgoingVideoFramesProduced": 617,
|
||||
"outgoingVideoFramesAccepted": 617,
|
||||
"outgoingVideoFramesDropped": 19,
|
||||
"outgoingVideoFramesCoalesced": 19,
|
||||
"outgoingVideoFramesCaptured": 598,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 29.05,
|
||||
"outgoingVideoTargetFps": 30,
|
||||
"outgoingVideoMaxQueueAgeMs": 33,
|
||||
"outgoingVideoMaxPushLatencyMs": 34,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 30,
|
||||
"adaptiveSendTier": "full",
|
||||
"adaptiveSendReason": "stable"
|
||||
}
|
||||
},
|
||||
"secondaryPublisherStats": {
|
||||
"rttMs": 38,
|
||||
"outbound": [
|
||||
{
|
||||
"trackSid": "TR_Asf2caReF2dUoe",
|
||||
"source": "screenshareAudio",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 261.7,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_VSDUf6mLBmkksq",
|
||||
"source": "screenshare",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 29.4,
|
||||
"packetsLost": 0,
|
||||
"fps": 29,
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_AMuo9vvgBhxrxp",
|
||||
"source": "microphone",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 98.8,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
}
|
||||
],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_mQQgkdVbS4Wi",
|
||||
"trackSid": "TR_AsXuPkpunfLw9E",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 265.5,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 3,
|
||||
"audioLevel": 0.307,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_mQQgkdVbS4Wi",
|
||||
"trackSid": "TR_VStW6iBWUPJvYp",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 402.2,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 5,
|
||||
"codec": "video/H264"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_mQQgkdVbS4Wi",
|
||||
"trackSid": "TR_AMraWSQbYVLoud",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 100.3,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 2,
|
||||
"audioLevel": 0.307,
|
||||
"codec": "audio/opus"
|
||||
}
|
||||
],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 0,
|
||||
"outgoingVideoFramesProduced": 618,
|
||||
"outgoingVideoFramesAccepted": 618,
|
||||
"outgoingVideoFramesDropped": 19,
|
||||
"outgoingVideoFramesCoalesced": 19,
|
||||
"outgoingVideoFramesCaptured": 599,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 29.07,
|
||||
"outgoingVideoTargetFps": 30,
|
||||
"outgoingVideoMaxQueueAgeMs": 33,
|
||||
"outgoingVideoMaxPushLatencyMs": 34,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 30,
|
||||
"adaptiveSendTier": "full",
|
||||
"adaptiveSendReason": "stable"
|
||||
}
|
||||
},
|
||||
"subscriberStats": {
|
||||
"rttMs": 6,
|
||||
"outbound": [],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_sFVVyQMPfG8Z",
|
||||
"trackSid": "TR_AMuo9vvgBhxrxp",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 100.8,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 3,
|
||||
"audioLevel": 0.307,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_sFVVyQMPfG8Z",
|
||||
"trackSid": "TR_VSDUf6mLBmkksq",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 29.4,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 5,
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_sFVVyQMPfG8Z",
|
||||
"trackSid": "TR_Asf2caReF2dUoe",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 271.7,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 2,
|
||||
"audioLevel": 0.307,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_mQQgkdVbS4Wi",
|
||||
"trackSid": "TR_VStW6iBWUPJvYp",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 399.8,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 5,
|
||||
"codec": "video/H264"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_mQQgkdVbS4Wi",
|
||||
"trackSid": "TR_AMraWSQbYVLoud",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 99.8,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 2,
|
||||
"audioLevel": 0.307,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_mQQgkdVbS4Wi",
|
||||
"trackSid": "TR_AsXuPkpunfLw9E",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 263.9,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 3,
|
||||
"audioLevel": 0.307,
|
||||
"codec": "audio/opus"
|
||||
}
|
||||
],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 0,
|
||||
"outgoingVideoFramesProduced": 0,
|
||||
"outgoingVideoFramesAccepted": 0,
|
||||
"outgoingVideoFramesDropped": 0,
|
||||
"outgoingVideoFramesCoalesced": 0,
|
||||
"outgoingVideoFramesCaptured": 0,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 0,
|
||||
"outgoingVideoTargetFps": 0,
|
||||
"outgoingVideoMaxQueueAgeMs": 0,
|
||||
"outgoingVideoMaxPushLatencyMs": 0,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 0,
|
||||
"adaptiveSendTier": "idle",
|
||||
"adaptiveSendReason": "notPublishing"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user