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:
+391
@@ -0,0 +1,391 @@
|
||||
{
|
||||
"status": "fail",
|
||||
"startedAt": "2026-06-05T22:33:47.023Z",
|
||||
"endedAt": "2026-06-05T22:34:19.284Z",
|
||||
"platform": "win32",
|
||||
"arch": "arm64",
|
||||
"config": {
|
||||
"url": "ws://100.79.83.54:17880",
|
||||
"serverApiUrl": "http://100.79.83.54:17880",
|
||||
"apiKey": "devkey",
|
||||
"room": "fluxer-webrtc-harness-6084-b067b112-e82c-4f9b-a8e5-8c17b58ce892",
|
||||
"externalTokens": false,
|
||||
"publisherIdentity": "fluxer-native-publisher-6084",
|
||||
"secondaryPublisherIdentity": "fluxer-native-publisher-2-6084",
|
||||
"subscriberIdentity": "fluxer-native-subscriber-6084",
|
||||
"required": true,
|
||||
"strict": true,
|
||||
"timeoutMs": 120000,
|
||||
"connectTimeoutMs": 30000,
|
||||
"disconnectTimeoutMs": 10000,
|
||||
"probeTimeoutMs": 1500,
|
||||
"durationMs": 30000,
|
||||
"width": 640,
|
||||
"height": 360,
|
||||
"expectedWidth": 640,
|
||||
"expectedHeight": 360,
|
||||
"fps": 10,
|
||||
"minFpsRatio": 0.95,
|
||||
"maxFrameGapMs": 250,
|
||||
"maxAudioFrameGapMs": 250,
|
||||
"maxAvDriftMs": 150,
|
||||
"maxPacketLoss": 0,
|
||||
"requireStableResolution": true,
|
||||
"videoPattern": "gradient",
|
||||
"videoInput": "bgra",
|
||||
"subscriberVideoQuality": null,
|
||||
"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": 10,
|
||||
"minResolutionScale": 0.5,
|
||||
"maxAudioBufferMs": 750,
|
||||
"secondaryPublisherMicrophone": true,
|
||||
"secondaryPublisherScreenAudio": true,
|
||||
"maxBitrateBps": 3000000,
|
||||
"sampleRate": 48000,
|
||||
"channels": 1,
|
||||
"audioChunkMs": 20,
|
||||
"microphone": true,
|
||||
"screenAudio": true,
|
||||
"dataPacket": true,
|
||||
"subscriptionCycle": true,
|
||||
"validateServerPublishing": true,
|
||||
"camera": false,
|
||||
"cameraDeviceId": null,
|
||||
"expectedCameraCodec": null,
|
||||
"expectedHardwareEncoder": null,
|
||||
"reportPath": "C:\\Mac\\Home\\Development\\fluxer\\fluxer_desktop\\native-media-reports\\windows-parallels-arm64\\h264-360p10-strict-single-20260605.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 640x360",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber aggregate inbound audio frames >= 6",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio stats count >= 2",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher local microphone publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote microphone subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio frames >= 6",
|
||||
"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": "subscriber 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
|
||||
}
|
||||
],
|
||||
"skippedReason": null,
|
||||
"error": "received FPS 9.43 below 9.5",
|
||||
"hardwareEncoder": {
|
||||
"available": false,
|
||||
"backend": "none",
|
||||
"compiled": true,
|
||||
"runtime": false,
|
||||
"codecs": [],
|
||||
"zeroCopy": false,
|
||||
"nativeInputs": [],
|
||||
"reason": "runtime_prerequisite_missing",
|
||||
"detail": "missing nvcuda.dll, nvEncodeAPI64.dll"
|
||||
},
|
||||
"metrics": {
|
||||
"inboundAudioFrames": 6176,
|
||||
"inboundVideoFrames": 287,
|
||||
"strictAudioFrames": 299,
|
||||
"strictVideoFrames": 283,
|
||||
"videoCallbacks": 287,
|
||||
"videoBytes": 99187200,
|
||||
"receivedFps": 9.43,
|
||||
"requiredFps": 9.5,
|
||||
"maxVideoFrameGapMs": 204,
|
||||
"maxAudioFrameGapMs": 103,
|
||||
"maxVideoFrameGapOverallMs": 204,
|
||||
"maxAudioFrameGapOverallMs": 103,
|
||||
"avDriftMs": 4,
|
||||
"maxObservedPacketLoss": 0,
|
||||
"maxObservedPacketLossDelta": 0,
|
||||
"videoResolutionCounts": {
|
||||
"640x360": 283
|
||||
},
|
||||
"videoResolutionMismatchCount": 0,
|
||||
"droppedVideoFrameCallbacks": 0,
|
||||
"publisherVideoPump": {
|
||||
"input": "bgra",
|
||||
"pattern": "gradient",
|
||||
"targetFps": 10,
|
||||
"startedAtMs": 1780698828184,
|
||||
"stoppedAtMs": null,
|
||||
"framesPushed": 311,
|
||||
"framesRejected": 0,
|
||||
"errors": 0,
|
||||
"maxPushGapMs": 103,
|
||||
"lastPushAtMs": 1780698859185,
|
||||
"elapsedMs": 31105,
|
||||
"producedFps": 10
|
||||
},
|
||||
"secondaryPublisherVideoPump": null,
|
||||
"serverPublishing": {
|
||||
"fetchedAtMs": 1780698829266,
|
||||
"error": null,
|
||||
"participants": [
|
||||
{
|
||||
"identity": "fluxer-native-publisher-6084",
|
||||
"trackCount": 3,
|
||||
"tracks": [
|
||||
{
|
||||
"sid": "TR_VSTAkE5Tyvf84k",
|
||||
"name": "screen",
|
||||
"kind": "video",
|
||||
"source": "screenshare",
|
||||
"mimeType": "video/H264",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_AMR8qs636tXCeM",
|
||||
"name": "mic",
|
||||
"kind": "audio",
|
||||
"source": "microphone",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_AsiQhtzQxKx3hg",
|
||||
"name": "screen-audio",
|
||||
"kind": "audio",
|
||||
"source": "screenshareAudio",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"identity": "fluxer-native-subscriber-6084",
|
||||
"trackCount": 0,
|
||||
"tracks": []
|
||||
}
|
||||
]
|
||||
},
|
||||
"lastVideoMeta": {
|
||||
"participantSid": "PA_yWuJtiAsGJHk",
|
||||
"trackSid": "TR_VSTAkE5Tyvf84k",
|
||||
"width": 640,
|
||||
"height": 360,
|
||||
"timestampUs": 1737095000
|
||||
},
|
||||
"publisherStats": {
|
||||
"rttMs": 4,
|
||||
"outbound": [
|
||||
{
|
||||
"trackSid": "TR_AsiQhtzQxKx3hg",
|
||||
"source": "screenshareAudio",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 259.9,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_AMR8qs636tXCeM",
|
||||
"source": "microphone",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 99,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_VSTAkE5Tyvf84k",
|
||||
"source": "screenshare",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 1267,
|
||||
"packetsLost": 0,
|
||||
"fps": 11,
|
||||
"codec": "video/H264"
|
||||
}
|
||||
],
|
||||
"inbound": [],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 0,
|
||||
"outgoingVideoFramesProduced": 310,
|
||||
"outgoingVideoFramesAccepted": 310,
|
||||
"outgoingVideoFramesDropped": 4,
|
||||
"outgoingVideoFramesCoalesced": 4,
|
||||
"outgoingVideoFramesCaptured": 306,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 9.87,
|
||||
"outgoingVideoTargetFps": 10,
|
||||
"outgoingVideoMaxQueueAgeMs": 100,
|
||||
"outgoingVideoMaxPushLatencyMs": 101,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 56,
|
||||
"adaptiveSendTier": "full",
|
||||
"adaptiveSendReason": "stable"
|
||||
}
|
||||
},
|
||||
"secondaryPublisherStats": null,
|
||||
"subscriberStats": {
|
||||
"rttMs": 4,
|
||||
"outbound": [],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_yWuJtiAsGJHk",
|
||||
"trackSid": "TR_AMR8qs636tXCeM",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 99,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 1,
|
||||
"audioLevel": 0.354,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_yWuJtiAsGJHk",
|
||||
"trackSid": "TR_VSTAkE5Tyvf84k",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 1267,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 4,
|
||||
"codec": "video/H264"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_yWuJtiAsGJHk",
|
||||
"trackSid": "TR_AsiQhtzQxKx3hg",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 259.9,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 1,
|
||||
"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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+391
@@ -0,0 +1,391 @@
|
||||
{
|
||||
"status": "fail",
|
||||
"startedAt": "2026-06-05T22:32:58.250Z",
|
||||
"endedAt": "2026-06-05T22:33:30.493Z",
|
||||
"platform": "win32",
|
||||
"arch": "arm64",
|
||||
"config": {
|
||||
"url": "ws://100.79.83.54:17880",
|
||||
"serverApiUrl": "http://100.79.83.54:17880",
|
||||
"apiKey": "devkey",
|
||||
"room": "fluxer-webrtc-harness-4444-6d4fc834-c519-4a03-831b-1f3c4f7b8db5",
|
||||
"externalTokens": false,
|
||||
"publisherIdentity": "fluxer-native-publisher-4444",
|
||||
"secondaryPublisherIdentity": "fluxer-native-publisher-2-4444",
|
||||
"subscriberIdentity": "fluxer-native-subscriber-4444",
|
||||
"required": true,
|
||||
"strict": true,
|
||||
"timeoutMs": 120000,
|
||||
"connectTimeoutMs": 30000,
|
||||
"disconnectTimeoutMs": 10000,
|
||||
"probeTimeoutMs": 1500,
|
||||
"durationMs": 30000,
|
||||
"width": 640,
|
||||
"height": 360,
|
||||
"expectedWidth": 640,
|
||||
"expectedHeight": 360,
|
||||
"fps": 15,
|
||||
"minFpsRatio": 0.95,
|
||||
"maxFrameGapMs": 250,
|
||||
"maxAudioFrameGapMs": 250,
|
||||
"maxAvDriftMs": 150,
|
||||
"maxPacketLoss": 0,
|
||||
"requireStableResolution": true,
|
||||
"videoPattern": "gradient",
|
||||
"videoInput": "bgra",
|
||||
"subscriberVideoQuality": null,
|
||||
"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": true,
|
||||
"secondaryPublisherScreenAudio": true,
|
||||
"maxBitrateBps": 4000000,
|
||||
"sampleRate": 48000,
|
||||
"channels": 1,
|
||||
"audioChunkMs": 20,
|
||||
"microphone": true,
|
||||
"screenAudio": true,
|
||||
"dataPacket": true,
|
||||
"subscriptionCycle": true,
|
||||
"validateServerPublishing": true,
|
||||
"camera": false,
|
||||
"cameraDeviceId": null,
|
||||
"expectedCameraCodec": null,
|
||||
"expectedHardwareEncoder": null,
|
||||
"reportPath": "C:\\Mac\\Home\\Development\\fluxer\\fluxer_desktop\\native-media-reports\\windows-parallels-arm64\\h264-360p15-strict-single-20260605.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 640x360",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber aggregate inbound audio frames >= 6",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio stats count >= 2",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher local microphone publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote microphone subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio frames >= 6",
|
||||
"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": "subscriber 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
|
||||
}
|
||||
],
|
||||
"skippedReason": null,
|
||||
"error": "received FPS 11.83 below 14.25",
|
||||
"hardwareEncoder": {
|
||||
"available": false,
|
||||
"backend": "none",
|
||||
"compiled": true,
|
||||
"runtime": false,
|
||||
"codecs": [],
|
||||
"zeroCopy": false,
|
||||
"nativeInputs": [],
|
||||
"reason": "runtime_prerequisite_missing",
|
||||
"detail": "missing nvcuda.dll, nvEncodeAPI64.dll"
|
||||
},
|
||||
"metrics": {
|
||||
"inboundAudioFrames": 6188,
|
||||
"inboundVideoFrames": 360,
|
||||
"strictAudioFrames": 299,
|
||||
"strictVideoFrames": 356,
|
||||
"videoCallbacks": 360,
|
||||
"videoBytes": 124416000,
|
||||
"receivedFps": 11.83,
|
||||
"requiredFps": 14.25,
|
||||
"maxVideoFrameGapMs": 220,
|
||||
"maxAudioFrameGapMs": 115,
|
||||
"maxVideoFrameGapOverallMs": 220,
|
||||
"maxAudioFrameGapOverallMs": 115,
|
||||
"avDriftMs": 16,
|
||||
"maxObservedPacketLoss": 0,
|
||||
"maxObservedPacketLossDelta": 0,
|
||||
"videoResolutionCounts": {
|
||||
"640x360": 356
|
||||
},
|
||||
"videoResolutionMismatchCount": 0,
|
||||
"droppedVideoFrameCallbacks": 0,
|
||||
"publisherVideoPump": {
|
||||
"input": "bgra",
|
||||
"pattern": "gradient",
|
||||
"targetFps": 15,
|
||||
"startedAtMs": 1780698779365,
|
||||
"stoppedAtMs": null,
|
||||
"framesPushed": 467,
|
||||
"framesRejected": 0,
|
||||
"errors": 0,
|
||||
"maxPushGapMs": 87,
|
||||
"lastPushAtMs": 1780698810433,
|
||||
"elapsedMs": 31131,
|
||||
"producedFps": 15
|
||||
},
|
||||
"secondaryPublisherVideoPump": null,
|
||||
"serverPublishing": {
|
||||
"fetchedAtMs": 1780698780443,
|
||||
"error": null,
|
||||
"participants": [
|
||||
{
|
||||
"identity": "fluxer-native-subscriber-4444",
|
||||
"trackCount": 0,
|
||||
"tracks": []
|
||||
},
|
||||
{
|
||||
"identity": "fluxer-native-publisher-4444",
|
||||
"trackCount": 3,
|
||||
"tracks": [
|
||||
{
|
||||
"sid": "TR_VSu5oXdquxv9yn",
|
||||
"name": "screen",
|
||||
"kind": "video",
|
||||
"source": "screenshare",
|
||||
"mimeType": "video/H264",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_AMw39xhBtq2iKo",
|
||||
"name": "mic",
|
||||
"kind": "audio",
|
||||
"source": "microphone",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_AsUfFKczDubKFH",
|
||||
"name": "screen-audio",
|
||||
"kind": "audio",
|
||||
"source": "screenshareAudio",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"lastVideoMeta": {
|
||||
"participantSid": "PA_jmECWh8cUV8Z",
|
||||
"trackSid": "TR_VSu5oXdquxv9yn",
|
||||
"width": 640,
|
||||
"height": 360,
|
||||
"timestampUs": 1688313000
|
||||
},
|
||||
"publisherStats": {
|
||||
"rttMs": 1,
|
||||
"outbound": [
|
||||
{
|
||||
"trackSid": "TR_AsUfFKczDubKFH",
|
||||
"source": "screenshareAudio",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 263,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_AMw39xhBtq2iKo",
|
||||
"source": "microphone",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 97.9,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_VSu5oXdquxv9yn",
|
||||
"source": "screenshare",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 1957.3,
|
||||
"packetsLost": 0,
|
||||
"fps": 15,
|
||||
"codec": "video/H264"
|
||||
}
|
||||
],
|
||||
"inbound": [],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 0,
|
||||
"outgoingVideoFramesProduced": 465,
|
||||
"outgoingVideoFramesAccepted": 465,
|
||||
"outgoingVideoFramesDropped": 9,
|
||||
"outgoingVideoFramesCoalesced": 9,
|
||||
"outgoingVideoFramesCaptured": 456,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 14.7,
|
||||
"outgoingVideoTargetFps": 15,
|
||||
"outgoingVideoMaxQueueAgeMs": 67,
|
||||
"outgoingVideoMaxPushLatencyMs": 68,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 45,
|
||||
"adaptiveSendTier": "full",
|
||||
"adaptiveSendReason": "stable"
|
||||
}
|
||||
},
|
||||
"secondaryPublisherStats": null,
|
||||
"subscriberStats": {
|
||||
"rttMs": 1,
|
||||
"outbound": [],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_jmECWh8cUV8Z",
|
||||
"trackSid": "TR_VSu5oXdquxv9yn",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 1957.3,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 4,
|
||||
"codec": "video/H264"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_jmECWh8cUV8Z",
|
||||
"trackSid": "TR_AMw39xhBtq2iKo",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 97.9,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 1,
|
||||
"audioLevel": 0.33,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_jmECWh8cUV8Z",
|
||||
"trackSid": "TR_AsUfFKczDubKFH",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 263,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 1,
|
||||
"audioLevel": 0.342,
|
||||
"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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+258
@@ -0,0 +1,258 @@
|
||||
{
|
||||
"status": "fail",
|
||||
"startedAt": "2026-06-05T22:35:16.027Z",
|
||||
"endedAt": "2026-06-05T22:35:17.121Z",
|
||||
"platform": "win32",
|
||||
"arch": "arm64",
|
||||
"config": {
|
||||
"url": "ws://100.79.83.54:17880",
|
||||
"serverApiUrl": "http://100.79.83.54:17880",
|
||||
"apiKey": "devkey",
|
||||
"room": "fluxer-webrtc-harness-6712-42fbb624-d6ae-4495-80c6-f657bba60b68",
|
||||
"externalTokens": false,
|
||||
"publisherIdentity": "fluxer-native-publisher-6712",
|
||||
"secondaryPublisherIdentity": "fluxer-native-publisher-2-6712",
|
||||
"subscriberIdentity": "fluxer-native-subscriber-6712",
|
||||
"required": true,
|
||||
"strict": true,
|
||||
"timeoutMs": 60000,
|
||||
"connectTimeoutMs": 30000,
|
||||
"disconnectTimeoutMs": 10000,
|
||||
"probeTimeoutMs": 1500,
|
||||
"durationMs": 10000,
|
||||
"width": 640,
|
||||
"height": 360,
|
||||
"expectedWidth": 640,
|
||||
"expectedHeight": 360,
|
||||
"fps": 15,
|
||||
"minFpsRatio": 0.95,
|
||||
"maxFrameGapMs": 250,
|
||||
"maxAudioFrameGapMs": 250,
|
||||
"maxAvDriftMs": 150,
|
||||
"maxPacketLoss": 0,
|
||||
"requireStableResolution": false,
|
||||
"videoPattern": "gradient",
|
||||
"videoInput": "bgra",
|
||||
"subscriberVideoQuality": null,
|
||||
"screenCodecs": ["h265"],
|
||||
"expectedScreenCodecs": ["h265"],
|
||||
"codec": "h265",
|
||||
"expectedScreenCodec": "video/H265",
|
||||
"secondaryPublisher": false,
|
||||
"secondaryPublisherCodec": "h265",
|
||||
"secondaryPublisherCodecExplicit": false,
|
||||
"expectedSecondaryPublisherCodec": "video/H265",
|
||||
"expectedSecondaryPublisherCodecExplicit": false,
|
||||
"screenSimulcast": false,
|
||||
"secondaryPublisherScreenSimulcast": false,
|
||||
"adaptiveSend": true,
|
||||
"minVideoFps": 15,
|
||||
"minResolutionScale": 0.5,
|
||||
"maxAudioBufferMs": 750,
|
||||
"secondaryPublisherMicrophone": true,
|
||||
"secondaryPublisherScreenAudio": true,
|
||||
"maxBitrateBps": 4000000,
|
||||
"sampleRate": 48000,
|
||||
"channels": 1,
|
||||
"audioChunkMs": 20,
|
||||
"microphone": true,
|
||||
"screenAudio": true,
|
||||
"dataPacket": false,
|
||||
"subscriptionCycle": false,
|
||||
"validateServerPublishing": false,
|
||||
"camera": false,
|
||||
"cameraDeviceId": null,
|
||||
"expectedCameraCodec": null,
|
||||
"expectedHardwareEncoder": null,
|
||||
"reportPath": "C:\\Mac\\Home\\Development\\fluxer\\fluxer_desktop\\native-media-reports\\windows-parallels-arm64\\h265-failfast-20260605.json",
|
||||
"verbose": false,
|
||||
"scenarioName": "codec-h265",
|
||||
"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 640x360",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber aggregate inbound audio frames >= 6",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio stats count >= 2",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "publisher local microphone publication",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote microphone subscription",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio frames >= 6",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound microphone stats",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio stats",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "publisher local screen-share audio publication",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote screen-share audio subscription",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screen-share audio stats",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screenshare codec video/H265",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video codec video/H265",
|
||||
"pass": false
|
||||
}
|
||||
],
|
||||
"skippedReason": null,
|
||||
"error": "Error: H.265 publishing requires hardware encoder support; missing nvcuda.dll, nvEncodeAPI64.dll",
|
||||
"hardwareEncoder": {
|
||||
"available": false,
|
||||
"backend": "none",
|
||||
"compiled": true,
|
||||
"runtime": false,
|
||||
"codecs": [],
|
||||
"zeroCopy": false,
|
||||
"nativeInputs": [],
|
||||
"reason": "runtime_prerequisite_missing",
|
||||
"detail": "missing nvcuda.dll, nvEncodeAPI64.dll"
|
||||
},
|
||||
"metrics": {
|
||||
"inboundAudioFrames": 0,
|
||||
"inboundVideoFrames": 0,
|
||||
"strictAudioFrames": 0,
|
||||
"strictVideoFrames": 0,
|
||||
"videoCallbacks": 0,
|
||||
"videoBytes": 0,
|
||||
"receivedFps": 0,
|
||||
"requiredFps": 14.25,
|
||||
"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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,96 @@
|
||||
param(
|
||||
[string]$Scenario = "vp8-360p15-strict-single",
|
||||
[string]$Codec = "vp8",
|
||||
[string]$SecondaryCodec = "",
|
||||
[int]$Width = 640,
|
||||
[int]$Height = 360,
|
||||
[double]$Fps = 15,
|
||||
[int]$DurationMs = 10000,
|
||||
[int]$TimeoutMs = 60000,
|
||||
[int]$SecondPublisher = 0,
|
||||
[int]$ScreenSimulcast = 0,
|
||||
[int]$ScreenAudio = 1,
|
||||
[int]$Microphone = 1,
|
||||
[int]$SubscriptionCycle = 1,
|
||||
[int]$DataPacket = 1,
|
||||
[int]$ValidateServerPublishing = 1,
|
||||
[int]$RequireStableResolution = 1,
|
||||
[int]$MaxPacketLoss = 0,
|
||||
[int]$MaxAvDriftMs = 150,
|
||||
[int]$MaxFrameGapMs = 250,
|
||||
[int]$MaxAudioFrameGapMs = 250,
|
||||
[double]$MinReceivedFpsRatio = 0.95,
|
||||
[int]$MaxBitrateBps = 4000000,
|
||||
[string]$LiveKitUrl = "ws://100.79.83.54:17880",
|
||||
[string]$LiveKitApiUrl = "http://100.79.83.54:17880",
|
||||
[string]$ApiKey = "devkey",
|
||||
[string]$ApiSecret = "secret",
|
||||
[string]$NodeDir = "C:\nodejs\node-v24.16.0-win-arm64",
|
||||
[string]$WorkDir = "C:\f\fluxer_desktop\native\webrtc-sender",
|
||||
[string]$ReportDir = "C:\Mac\Home\Development\fluxer\fluxer_desktop\native-media-reports\windows-parallels-arm64",
|
||||
[int]$VerboseHarness = 0
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
$nodeExe = Join-Path $NodeDir "node.exe"
|
||||
if (-not (Test-Path $nodeExe)) {
|
||||
throw "Node executable not found: $nodeExe"
|
||||
}
|
||||
if (-not (Test-Path $WorkDir)) {
|
||||
throw "WorkDir not found: $WorkDir"
|
||||
}
|
||||
|
||||
New-Item -ItemType Directory -Force -Path $ReportDir | Out-Null
|
||||
$reportPath = Join-Path $ReportDir "$Scenario.json"
|
||||
$logPath = Join-Path $ReportDir "$Scenario.log"
|
||||
Remove-Item -Force $reportPath, $logPath -ErrorAction SilentlyContinue
|
||||
|
||||
$env:Path = "$NodeDir;$env:Path"
|
||||
$env:LIVEKIT_URL = $LiveKitUrl
|
||||
$env:LIVEKIT_API_URL = $LiveKitApiUrl
|
||||
$env:LIVEKIT_API_KEY = $ApiKey
|
||||
$env:LIVEKIT_API_SECRET = $ApiSecret
|
||||
$env:FLUXER_WEBRTC_SENDER_LIVEKIT_REQUIRED = "1"
|
||||
$env:LIVEKIT_HARNESS_STRICT = "1"
|
||||
$env:LIVEKIT_HARNESS_DURATION_MS = [string]$DurationMs
|
||||
$env:LIVEKIT_HARNESS_TIMEOUT_MS = [string]$TimeoutMs
|
||||
$env:LIVEKIT_CONNECT_TIMEOUT_MS = "30000"
|
||||
$env:LIVEKIT_SCREEN_WIDTH = [string]$Width
|
||||
$env:LIVEKIT_SCREEN_HEIGHT = [string]$Height
|
||||
$env:LIVEKIT_SCREEN_FPS = [string]$Fps
|
||||
$env:LIVEKIT_MIN_VIDEO_FPS = [string]([math]::Min(15, $Fps))
|
||||
$env:LIVEKIT_MIN_RECEIVED_FPS_RATIO = [string]$MinReceivedFpsRatio
|
||||
$env:LIVEKIT_SCREEN_CODEC = $Codec
|
||||
$env:LIVEKIT_SCREEN_SIMULCAST = [string]$ScreenSimulcast
|
||||
$env:LIVEKIT_ENABLE_SECOND_PUBLISHER = [string]$SecondPublisher
|
||||
$env:LIVEKIT_ENABLE_MICROPHONE = [string]$Microphone
|
||||
$env:LIVEKIT_ENABLE_SCREEN_AUDIO = [string]$ScreenAudio
|
||||
$env:LIVEKIT_ENABLE_SUBSCRIPTION_CYCLE = [string]$SubscriptionCycle
|
||||
$env:LIVEKIT_ENABLE_DATA_PACKET = [string]$DataPacket
|
||||
$env:LIVEKIT_VALIDATE_SERVER_PUBLISHING = [string]$ValidateServerPublishing
|
||||
$env:LIVEKIT_MAX_PACKET_LOSS = [string]$MaxPacketLoss
|
||||
$env:LIVEKIT_REQUIRE_STABLE_RESOLUTION = [string]$RequireStableResolution
|
||||
$env:LIVEKIT_MAX_AV_DRIFT_MS = [string]$MaxAvDriftMs
|
||||
$env:LIVEKIT_MAX_FRAME_GAP_MS = [string]$MaxFrameGapMs
|
||||
$env:LIVEKIT_MAX_AUDIO_FRAME_GAP_MS = [string]$MaxAudioFrameGapMs
|
||||
$env:LIVEKIT_SCREEN_MAX_BITRATE_BPS = [string]$MaxBitrateBps
|
||||
$env:LIVEKIT_HARNESS_REPORT_PATH = $reportPath
|
||||
$env:LIVEKIT_VERBOSE = [string]$VerboseHarness
|
||||
|
||||
if ($SecondPublisher -ne 0 -and $SecondaryCodec.Trim().Length -gt 0) {
|
||||
$env:LIVEKIT_SECOND_PUBLISHER_SCREEN_CODEC = $SecondaryCodec
|
||||
}
|
||||
|
||||
Set-Location $WorkDir
|
||||
"STARTED=$(Get-Date -Format o)" | Out-File -FilePath $logPath -Encoding utf8
|
||||
"& $nodeExe scripts/livekit-harness.mjs" | Add-Content -Path $logPath
|
||||
$previousErrorActionPreference = $ErrorActionPreference
|
||||
$ErrorActionPreference = "Continue"
|
||||
& $nodeExe "scripts/livekit-harness.mjs" *>> $logPath
|
||||
$code = $LASTEXITCODE
|
||||
$ErrorActionPreference = $previousErrorActionPreference
|
||||
"EXIT_CODE=$code" | Add-Content -Path $logPath
|
||||
"FINISHED=$(Get-Date -Format o)" | Add-Content -Path $logPath
|
||||
|
||||
Get-Content -Path $logPath
|
||||
exit $code
|
||||
+637
@@ -0,0 +1,637 @@
|
||||
{
|
||||
"status": "pass",
|
||||
"startedAt": "2026-06-05T22:34:34.390Z",
|
||||
"endedAt": "2026-06-05T22:34:56.901Z",
|
||||
"platform": "win32",
|
||||
"arch": "arm64",
|
||||
"config": {
|
||||
"url": "ws://100.79.83.54:17880",
|
||||
"serverApiUrl": "http://100.79.83.54:17880",
|
||||
"apiKey": "devkey",
|
||||
"room": "fluxer-webrtc-harness-576-9baa1b50-b3f6-47dc-9222-bb3a324a8678",
|
||||
"externalTokens": false,
|
||||
"publisherIdentity": "fluxer-native-publisher-576",
|
||||
"secondaryPublisherIdentity": "fluxer-native-publisher-2-576",
|
||||
"subscriberIdentity": "fluxer-native-subscriber-576",
|
||||
"required": true,
|
||||
"strict": true,
|
||||
"timeoutMs": 120000,
|
||||
"connectTimeoutMs": 30000,
|
||||
"disconnectTimeoutMs": 10000,
|
||||
"probeTimeoutMs": 1500,
|
||||
"durationMs": 20000,
|
||||
"width": 640,
|
||||
"height": 360,
|
||||
"expectedWidth": 640,
|
||||
"expectedHeight": 360,
|
||||
"fps": 15,
|
||||
"minFpsRatio": 0.95,
|
||||
"maxFrameGapMs": 250,
|
||||
"maxAudioFrameGapMs": 250,
|
||||
"maxAvDriftMs": 150,
|
||||
"maxPacketLoss": 0,
|
||||
"requireStableResolution": true,
|
||||
"videoPattern": "gradient",
|
||||
"videoInput": "bgra",
|
||||
"subscriberVideoQuality": null,
|
||||
"screenCodecs": ["vp8"],
|
||||
"expectedScreenCodecs": ["vp8"],
|
||||
"codec": "vp8",
|
||||
"expectedScreenCodec": "video/VP8",
|
||||
"secondaryPublisher": true,
|
||||
"secondaryPublisherCodec": "vp8",
|
||||
"secondaryPublisherCodecExplicit": false,
|
||||
"expectedSecondaryPublisherCodec": "video/VP8",
|
||||
"expectedSecondaryPublisherCodecExplicit": false,
|
||||
"screenSimulcast": false,
|
||||
"secondaryPublisherScreenSimulcast": false,
|
||||
"adaptiveSend": true,
|
||||
"minVideoFps": 15,
|
||||
"minResolutionScale": 0.5,
|
||||
"maxAudioBufferMs": 750,
|
||||
"secondaryPublisherMicrophone": true,
|
||||
"secondaryPublisherScreenAudio": true,
|
||||
"maxBitrateBps": 4000000,
|
||||
"sampleRate": 48000,
|
||||
"channels": 1,
|
||||
"audioChunkMs": 20,
|
||||
"microphone": true,
|
||||
"screenAudio": true,
|
||||
"dataPacket": true,
|
||||
"subscriptionCycle": true,
|
||||
"validateServerPublishing": true,
|
||||
"camera": false,
|
||||
"cameraDeviceId": null,
|
||||
"expectedCameraCodec": null,
|
||||
"expectedHardwareEncoder": null,
|
||||
"reportPath": "C:\\Mac\\Home\\Development\\fluxer\\fluxer_desktop\\native-media-reports\\windows-parallels-arm64\\vp8-360p15-strict-multipub-20260605.json",
|
||||
"verbose": false,
|
||||
"scenarioName": "codec-vp8-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 640x360",
|
||||
"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/VP8",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video codec video/VP8",
|
||||
"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": "runtime_prerequisite_missing",
|
||||
"detail": "missing nvcuda.dll, nvEncodeAPI64.dll"
|
||||
},
|
||||
"metrics": {
|
||||
"inboundAudioFrames": 8386,
|
||||
"inboundVideoFrames": 605,
|
||||
"strictAudioFrames": 199,
|
||||
"strictVideoFrames": 588,
|
||||
"videoCallbacks": 605,
|
||||
"videoBytes": 209088000,
|
||||
"receivedFps": 29.42,
|
||||
"requiredFps": 14.25,
|
||||
"maxVideoFrameGapMs": 129,
|
||||
"maxAudioFrameGapMs": 108,
|
||||
"maxVideoFrameGapOverallMs": 129,
|
||||
"maxAudioFrameGapOverallMs": 112,
|
||||
"avDriftMs": 5,
|
||||
"maxObservedPacketLoss": 0,
|
||||
"maxObservedPacketLossDelta": 0,
|
||||
"videoResolutionCounts": {
|
||||
"640x360": 588
|
||||
},
|
||||
"videoResolutionMismatchCount": 0,
|
||||
"droppedVideoFrameCallbacks": 0,
|
||||
"publisherVideoPump": {
|
||||
"input": "bgra",
|
||||
"pattern": "gradient",
|
||||
"targetFps": 15,
|
||||
"startedAtMs": 1780698875820,
|
||||
"stoppedAtMs": null,
|
||||
"framesPushed": 317,
|
||||
"framesRejected": 0,
|
||||
"errors": 0,
|
||||
"maxPushGapMs": 74,
|
||||
"lastPushAtMs": 1780698896886,
|
||||
"elapsedMs": 21084,
|
||||
"producedFps": 15.04
|
||||
},
|
||||
"secondaryPublisherVideoPump": {
|
||||
"input": "bgra",
|
||||
"pattern": "gradient",
|
||||
"targetFps": 15,
|
||||
"startedAtMs": 1780698875820,
|
||||
"stoppedAtMs": null,
|
||||
"framesPushed": 317,
|
||||
"framesRejected": 0,
|
||||
"errors": 0,
|
||||
"maxPushGapMs": 74,
|
||||
"lastPushAtMs": 1780698896888,
|
||||
"elapsedMs": 21084,
|
||||
"producedFps": 15.04
|
||||
},
|
||||
"serverPublishing": {
|
||||
"fetchedAtMs": 1780698876883,
|
||||
"error": null,
|
||||
"participants": [
|
||||
{
|
||||
"identity": "fluxer-native-publisher-2-576",
|
||||
"trackCount": 3,
|
||||
"tracks": [
|
||||
{
|
||||
"sid": "TR_AMafY4CpWgYhFy",
|
||||
"name": "mic",
|
||||
"kind": "audio",
|
||||
"source": "microphone",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_AsEzCDkQT4wKAK",
|
||||
"name": "screen-audio",
|
||||
"kind": "audio",
|
||||
"source": "screenshareAudio",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_VSbd2RjXnY3stM",
|
||||
"name": "screen",
|
||||
"kind": "video",
|
||||
"source": "screenshare",
|
||||
"mimeType": "video/VP8",
|
||||
"muted": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"identity": "fluxer-native-subscriber-576",
|
||||
"trackCount": 0,
|
||||
"tracks": []
|
||||
},
|
||||
{
|
||||
"identity": "fluxer-native-publisher-576",
|
||||
"trackCount": 3,
|
||||
"tracks": [
|
||||
{
|
||||
"sid": "TR_VSc4kF32666sNr",
|
||||
"name": "screen",
|
||||
"kind": "video",
|
||||
"source": "screenshare",
|
||||
"mimeType": "video/VP8",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_AMrQCsApajeKHi",
|
||||
"name": "mic",
|
||||
"kind": "audio",
|
||||
"source": "microphone",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_AsX4E2jVX6P6XY",
|
||||
"name": "screen-audio",
|
||||
"kind": "audio",
|
||||
"source": "screenshareAudio",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"lastVideoMeta": {
|
||||
"participantSid": "PA_adnUMDZZHzat",
|
||||
"trackSid": "TR_VSc4kF32666sNr",
|
||||
"width": 640,
|
||||
"height": 360,
|
||||
"timestampUs": 1774721000
|
||||
},
|
||||
"publisherStats": {
|
||||
"rttMs": 1,
|
||||
"outbound": [
|
||||
{
|
||||
"trackSid": "TR_AsX4E2jVX6P6XY",
|
||||
"source": "screenshareAudio",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 258.8,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_VSc4kF32666sNr",
|
||||
"source": "screenshare",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 1259.5,
|
||||
"packetsLost": 0,
|
||||
"fps": 15,
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_AMrQCsApajeKHi",
|
||||
"source": "microphone",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 98.2,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
}
|
||||
],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_A8vwT8LTQovP",
|
||||
"trackSid": "TR_AMafY4CpWgYhFy",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 99.8,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 2,
|
||||
"audioLevel": 0.306,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_A8vwT8LTQovP",
|
||||
"trackSid": "TR_VSbd2RjXnY3stM",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 1257.1,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 5,
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_A8vwT8LTQovP",
|
||||
"trackSid": "TR_AsEzCDkQT4wKAK",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 264.5,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 2,
|
||||
"audioLevel": 0.306,
|
||||
"codec": "audio/opus"
|
||||
}
|
||||
],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 0,
|
||||
"outgoingVideoFramesProduced": 310,
|
||||
"outgoingVideoFramesAccepted": 310,
|
||||
"outgoingVideoFramesDropped": 6,
|
||||
"outgoingVideoFramesCoalesced": 6,
|
||||
"outgoingVideoFramesCaptured": 304,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 14.7,
|
||||
"outgoingVideoTargetFps": 15,
|
||||
"outgoingVideoMaxQueueAgeMs": 67,
|
||||
"outgoingVideoMaxPushLatencyMs": 67,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 51,
|
||||
"adaptiveSendTier": "full",
|
||||
"adaptiveSendReason": "stable"
|
||||
}
|
||||
},
|
||||
"secondaryPublisherStats": {
|
||||
"rttMs": 2,
|
||||
"outbound": [
|
||||
{
|
||||
"trackSid": "TR_AsEzCDkQT4wKAK",
|
||||
"source": "screenshareAudio",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 259.9,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_VSbd2RjXnY3stM",
|
||||
"source": "screenshare",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 1171.6,
|
||||
"packetsLost": 0,
|
||||
"fps": 15,
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_AMafY4CpWgYhFy",
|
||||
"source": "microphone",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 98.1,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
}
|
||||
],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_adnUMDZZHzat",
|
||||
"trackSid": "TR_AsX4E2jVX6P6XY",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 259.2,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 2,
|
||||
"audioLevel": 0.307,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_adnUMDZZHzat",
|
||||
"trackSid": "TR_AMrQCsApajeKHi",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 98,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 2,
|
||||
"audioLevel": 0.326,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_adnUMDZZHzat",
|
||||
"trackSid": "TR_VSc4kF32666sNr",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 1176.7,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 4,
|
||||
"codec": "video/VP8"
|
||||
}
|
||||
],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 0,
|
||||
"outgoingVideoFramesProduced": 312,
|
||||
"outgoingVideoFramesAccepted": 312,
|
||||
"outgoingVideoFramesDropped": 6,
|
||||
"outgoingVideoFramesCoalesced": 6,
|
||||
"outgoingVideoFramesCaptured": 306,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 14.7,
|
||||
"outgoingVideoTargetFps": 15,
|
||||
"outgoingVideoMaxQueueAgeMs": 67,
|
||||
"outgoingVideoMaxPushLatencyMs": 68,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 51,
|
||||
"adaptiveSendTier": "full",
|
||||
"adaptiveSendReason": "stable"
|
||||
}
|
||||
},
|
||||
"subscriberStats": {
|
||||
"rttMs": 2,
|
||||
"outbound": [],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_adnUMDZZHzat",
|
||||
"trackSid": "TR_AsX4E2jVX6P6XY",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 258.8,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 2,
|
||||
"audioLevel": 0.336,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_adnUMDZZHzat",
|
||||
"trackSid": "TR_VSc4kF32666sNr",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 1259.5,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 4,
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_adnUMDZZHzat",
|
||||
"trackSid": "TR_AMrQCsApajeKHi",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 98.2,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 2,
|
||||
"audioLevel": 0.307,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_A8vwT8LTQovP",
|
||||
"trackSid": "TR_AMafY4CpWgYhFy",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 99.7,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 2,
|
||||
"audioLevel": 0.306,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_A8vwT8LTQovP",
|
||||
"trackSid": "TR_AsEzCDkQT4wKAK",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 264.3,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 2,
|
||||
"audioLevel": 0.307,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_A8vwT8LTQovP",
|
||||
"trackSid": "TR_VSbd2RjXnY3stM",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 1256,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 6,
|
||||
"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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+391
@@ -0,0 +1,391 @@
|
||||
{
|
||||
"status": "pass",
|
||||
"startedAt": "2026-06-05T22:30:31.342Z",
|
||||
"endedAt": "2026-06-05T22:30:43.694Z",
|
||||
"platform": "win32",
|
||||
"arch": "arm64",
|
||||
"config": {
|
||||
"url": "ws://100.79.83.54:17880",
|
||||
"serverApiUrl": "http://100.79.83.54:17880",
|
||||
"apiKey": "devkey",
|
||||
"room": "fluxer-webrtc-harness-3164-5cfbcff1-2827-441a-a57b-4333e450d829",
|
||||
"externalTokens": false,
|
||||
"publisherIdentity": "fluxer-native-publisher-3164",
|
||||
"secondaryPublisherIdentity": "fluxer-native-publisher-2-3164",
|
||||
"subscriberIdentity": "fluxer-native-subscriber-3164",
|
||||
"required": true,
|
||||
"strict": true,
|
||||
"timeoutMs": 60000,
|
||||
"connectTimeoutMs": 30000,
|
||||
"disconnectTimeoutMs": 10000,
|
||||
"probeTimeoutMs": 1500,
|
||||
"durationMs": 10000,
|
||||
"width": 640,
|
||||
"height": 360,
|
||||
"expectedWidth": 640,
|
||||
"expectedHeight": 360,
|
||||
"fps": 15,
|
||||
"minFpsRatio": 0.95,
|
||||
"maxFrameGapMs": 250,
|
||||
"maxAudioFrameGapMs": 250,
|
||||
"maxAvDriftMs": 150,
|
||||
"maxPacketLoss": 0,
|
||||
"requireStableResolution": true,
|
||||
"videoPattern": "gradient",
|
||||
"videoInput": "bgra",
|
||||
"subscriberVideoQuality": null,
|
||||
"screenCodecs": ["vp8"],
|
||||
"expectedScreenCodecs": ["vp8"],
|
||||
"codec": "vp8",
|
||||
"expectedScreenCodec": "video/VP8",
|
||||
"secondaryPublisher": false,
|
||||
"secondaryPublisherCodec": "vp8",
|
||||
"secondaryPublisherCodecExplicit": false,
|
||||
"expectedSecondaryPublisherCodec": "video/VP8",
|
||||
"expectedSecondaryPublisherCodecExplicit": false,
|
||||
"screenSimulcast": false,
|
||||
"secondaryPublisherScreenSimulcast": false,
|
||||
"adaptiveSend": true,
|
||||
"minVideoFps": 15,
|
||||
"minResolutionScale": 0.5,
|
||||
"maxAudioBufferMs": 750,
|
||||
"secondaryPublisherMicrophone": true,
|
||||
"secondaryPublisherScreenAudio": true,
|
||||
"maxBitrateBps": 4000000,
|
||||
"sampleRate": 48000,
|
||||
"channels": 1,
|
||||
"audioChunkMs": 20,
|
||||
"microphone": true,
|
||||
"screenAudio": true,
|
||||
"dataPacket": true,
|
||||
"subscriptionCycle": true,
|
||||
"validateServerPublishing": true,
|
||||
"camera": false,
|
||||
"cameraDeviceId": null,
|
||||
"expectedCameraCodec": null,
|
||||
"expectedHardwareEncoder": null,
|
||||
"reportPath": "C:\\Mac\\Home\\Development\\fluxer\\fluxer_desktop\\native-media-reports\\windows-parallels-arm64\\vp8-360p15-strict-single-smoke-20260605.json",
|
||||
"verbose": true,
|
||||
"scenarioName": "codec-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 >= 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 640x360",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber aggregate inbound audio frames >= 6",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio stats count >= 2",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher local microphone publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote microphone subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio frames >= 6",
|
||||
"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": "subscriber data packet received",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screenshare codec video/VP8",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video codec video/VP8",
|
||||
"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
|
||||
}
|
||||
],
|
||||
"skippedReason": null,
|
||||
"error": null,
|
||||
"hardwareEncoder": {
|
||||
"available": false,
|
||||
"backend": "none",
|
||||
"compiled": true,
|
||||
"runtime": false,
|
||||
"codecs": [],
|
||||
"zeroCopy": false,
|
||||
"nativeInputs": [],
|
||||
"reason": "runtime_prerequisite_missing",
|
||||
"detail": "missing nvcuda.dll, nvEncodeAPI64.dll"
|
||||
},
|
||||
"metrics": {
|
||||
"inboundAudioFrames": 2156,
|
||||
"inboundVideoFrames": 152,
|
||||
"strictAudioFrames": 100,
|
||||
"strictVideoFrames": 147,
|
||||
"videoCallbacks": 152,
|
||||
"videoBytes": 52531200,
|
||||
"receivedFps": 14.66,
|
||||
"requiredFps": 14.25,
|
||||
"maxVideoFrameGapMs": 143,
|
||||
"maxAudioFrameGapMs": 105,
|
||||
"maxVideoFrameGapOverallMs": 143,
|
||||
"maxAudioFrameGapOverallMs": 325,
|
||||
"avDriftMs": 26,
|
||||
"maxObservedPacketLoss": 0,
|
||||
"maxObservedPacketLossDelta": 0,
|
||||
"videoResolutionCounts": {
|
||||
"640x360": 147
|
||||
},
|
||||
"videoResolutionMismatchCount": 0,
|
||||
"droppedVideoFrameCallbacks": 0,
|
||||
"publisherVideoPump": {
|
||||
"input": "bgra",
|
||||
"pattern": "gradient",
|
||||
"targetFps": 15,
|
||||
"startedAtMs": 1780698632580,
|
||||
"stoppedAtMs": null,
|
||||
"framesPushed": 163,
|
||||
"framesRejected": 0,
|
||||
"errors": 0,
|
||||
"maxPushGapMs": 355,
|
||||
"lastPushAtMs": 1780698643669,
|
||||
"elapsedMs": 11117,
|
||||
"producedFps": 14.66
|
||||
},
|
||||
"secondaryPublisherVideoPump": null,
|
||||
"serverPublishing": {
|
||||
"fetchedAtMs": 1780698633676,
|
||||
"error": null,
|
||||
"participants": [
|
||||
{
|
||||
"identity": "fluxer-native-subscriber-3164",
|
||||
"trackCount": 0,
|
||||
"tracks": []
|
||||
},
|
||||
{
|
||||
"identity": "fluxer-native-publisher-3164",
|
||||
"trackCount": 3,
|
||||
"tracks": [
|
||||
{
|
||||
"sid": "TR_VSD8qaPQikwWiL",
|
||||
"name": "screen",
|
||||
"kind": "video",
|
||||
"source": "screenshare",
|
||||
"mimeType": "video/VP8",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_AMMkiV8hg3XbkW",
|
||||
"name": "mic",
|
||||
"kind": "audio",
|
||||
"source": "microphone",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_AsTaYjh3PSCFVz",
|
||||
"name": "screen-audio",
|
||||
"kind": "audio",
|
||||
"source": "screenshareAudio",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"lastVideoMeta": {
|
||||
"participantSid": "PA_fME8NrPiTu5d",
|
||||
"trackSid": "TR_VSD8qaPQikwWiL",
|
||||
"width": 640,
|
||||
"height": 360,
|
||||
"timestampUs": 1521475000
|
||||
},
|
||||
"publisherStats": {
|
||||
"rttMs": 3,
|
||||
"outbound": [
|
||||
{
|
||||
"trackSid": "TR_AMMkiV8hg3XbkW",
|
||||
"source": "microphone",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 98.9,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_VSD8qaPQikwWiL",
|
||||
"source": "screenshare",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 1233,
|
||||
"packetsLost": 0,
|
||||
"fps": 15,
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_AsTaYjh3PSCFVz",
|
||||
"source": "screenshareAudio",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 256.8,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
}
|
||||
],
|
||||
"inbound": [],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 1,
|
||||
"outgoingVideoFramesProduced": 161,
|
||||
"outgoingVideoFramesAccepted": 161,
|
||||
"outgoingVideoFramesDropped": 2,
|
||||
"outgoingVideoFramesCoalesced": 2,
|
||||
"outgoingVideoFramesCaptured": 158,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 14.36,
|
||||
"outgoingVideoTargetFps": 15,
|
||||
"outgoingVideoMaxQueueAgeMs": 66,
|
||||
"outgoingVideoMaxPushLatencyMs": 66,
|
||||
"outgoingAudioBufferTargetMs": 300,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 1,
|
||||
"outgoingAudioRebuffers": 1,
|
||||
"outgoingAudioMaxFrameGapMs": 316,
|
||||
"adaptiveSendTier": "full",
|
||||
"adaptiveSendReason": "stable"
|
||||
}
|
||||
},
|
||||
"secondaryPublisherStats": null,
|
||||
"subscriberStats": {
|
||||
"rttMs": 1,
|
||||
"outbound": [],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_fME8NrPiTu5d",
|
||||
"trackSid": "TR_VSD8qaPQikwWiL",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 1158.7,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 22,
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_fME8NrPiTu5d",
|
||||
"trackSid": "TR_AsTaYjh3PSCFVz",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 252.2,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 1,
|
||||
"audioLevel": 0.336,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_fME8NrPiTu5d",
|
||||
"trackSid": "TR_AMMkiV8hg3XbkW",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 99,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 1,
|
||||
"audioLevel": 0.332,
|
||||
"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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+391
@@ -0,0 +1,391 @@
|
||||
{
|
||||
"status": "pass",
|
||||
"startedAt": "2026-06-05T22:39:23.612Z",
|
||||
"endedAt": "2026-06-05T22:39:35.835Z",
|
||||
"platform": "win32",
|
||||
"arch": "arm64",
|
||||
"config": {
|
||||
"url": "ws://100.79.83.54:17880",
|
||||
"serverApiUrl": "http://100.79.83.54:17880",
|
||||
"apiKey": "devkey",
|
||||
"room": "fluxer-webrtc-harness-8360-3df01e6b-06f6-4b3c-9e56-c691627bb305",
|
||||
"externalTokens": false,
|
||||
"publisherIdentity": "fluxer-native-publisher-8360",
|
||||
"secondaryPublisherIdentity": "fluxer-native-publisher-2-8360",
|
||||
"subscriberIdentity": "fluxer-native-subscriber-8360",
|
||||
"required": true,
|
||||
"strict": true,
|
||||
"timeoutMs": 60000,
|
||||
"connectTimeoutMs": 30000,
|
||||
"disconnectTimeoutMs": 10000,
|
||||
"probeTimeoutMs": 1500,
|
||||
"durationMs": 10000,
|
||||
"width": 640,
|
||||
"height": 360,
|
||||
"expectedWidth": 640,
|
||||
"expectedHeight": 360,
|
||||
"fps": 30,
|
||||
"minFpsRatio": 0.95,
|
||||
"maxFrameGapMs": 250,
|
||||
"maxAudioFrameGapMs": 250,
|
||||
"maxAvDriftMs": 150,
|
||||
"maxPacketLoss": 0,
|
||||
"requireStableResolution": true,
|
||||
"videoPattern": "gradient",
|
||||
"videoInput": "bgra",
|
||||
"subscriberVideoQuality": null,
|
||||
"screenCodecs": ["vp8"],
|
||||
"expectedScreenCodecs": ["vp8"],
|
||||
"codec": "vp8",
|
||||
"expectedScreenCodec": "video/VP8",
|
||||
"secondaryPublisher": false,
|
||||
"secondaryPublisherCodec": "vp8",
|
||||
"secondaryPublisherCodecExplicit": false,
|
||||
"expectedSecondaryPublisherCodec": "video/VP8",
|
||||
"expectedSecondaryPublisherCodecExplicit": false,
|
||||
"screenSimulcast": false,
|
||||
"secondaryPublisherScreenSimulcast": false,
|
||||
"adaptiveSend": true,
|
||||
"minVideoFps": 15,
|
||||
"minResolutionScale": 0.5,
|
||||
"maxAudioBufferMs": 750,
|
||||
"secondaryPublisherMicrophone": true,
|
||||
"secondaryPublisherScreenAudio": true,
|
||||
"maxBitrateBps": 5000000,
|
||||
"sampleRate": 48000,
|
||||
"channels": 1,
|
||||
"audioChunkMs": 20,
|
||||
"microphone": true,
|
||||
"screenAudio": true,
|
||||
"dataPacket": true,
|
||||
"subscriptionCycle": true,
|
||||
"validateServerPublishing": true,
|
||||
"camera": false,
|
||||
"cameraDeviceId": null,
|
||||
"expectedCameraCodec": null,
|
||||
"expectedHardwareEncoder": null,
|
||||
"reportPath": "C:\\Mac\\Home\\Development\\fluxer\\fluxer_desktop\\native-media-reports\\windows-parallels-arm64\\vp8-360p30-reason-after-fix-20260605.json",
|
||||
"verbose": false,
|
||||
"scenarioName": "codec-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 >= 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 640x360",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber aggregate inbound audio frames >= 6",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio stats count >= 2",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher local microphone publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote microphone subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio frames >= 6",
|
||||
"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": "subscriber data packet received",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screenshare codec video/VP8",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video codec video/VP8",
|
||||
"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
|
||||
}
|
||||
],
|
||||
"skippedReason": null,
|
||||
"error": null,
|
||||
"hardwareEncoder": {
|
||||
"available": false,
|
||||
"backend": "none",
|
||||
"compiled": true,
|
||||
"runtime": false,
|
||||
"codecs": [],
|
||||
"zeroCopy": false,
|
||||
"nativeInputs": [],
|
||||
"reason": "runtime_prerequisite_missing",
|
||||
"detail": "missing nvcuda.dll, nvEncodeAPI64.dll"
|
||||
},
|
||||
"metrics": {
|
||||
"inboundAudioFrames": 2170,
|
||||
"inboundVideoFrames": 299,
|
||||
"strictAudioFrames": 99,
|
||||
"strictVideoFrames": 291,
|
||||
"videoCallbacks": 299,
|
||||
"videoBytes": 103334400,
|
||||
"receivedFps": 29.05,
|
||||
"requiredFps": 28.5,
|
||||
"maxVideoFrameGapMs": 65,
|
||||
"maxAudioFrameGapMs": 109,
|
||||
"maxVideoFrameGapOverallMs": 195,
|
||||
"maxAudioFrameGapOverallMs": 109,
|
||||
"avDriftMs": 41,
|
||||
"maxObservedPacketLoss": 0,
|
||||
"maxObservedPacketLossDelta": 0,
|
||||
"videoResolutionCounts": {
|
||||
"640x360": 291
|
||||
},
|
||||
"videoResolutionMismatchCount": 0,
|
||||
"droppedVideoFrameCallbacks": 0,
|
||||
"publisherVideoPump": {
|
||||
"input": "bgra",
|
||||
"pattern": "gradient",
|
||||
"targetFps": 30,
|
||||
"startedAtMs": 1780699164743,
|
||||
"stoppedAtMs": null,
|
||||
"framesPushed": 333,
|
||||
"framesRejected": 0,
|
||||
"errors": 0,
|
||||
"maxPushGapMs": 52,
|
||||
"lastPushAtMs": 1780699175812,
|
||||
"elapsedMs": 11095,
|
||||
"producedFps": 30.01
|
||||
},
|
||||
"secondaryPublisherVideoPump": null,
|
||||
"serverPublishing": {
|
||||
"fetchedAtMs": 1780699165815,
|
||||
"error": null,
|
||||
"participants": [
|
||||
{
|
||||
"identity": "fluxer-native-subscriber-8360",
|
||||
"trackCount": 0,
|
||||
"tracks": []
|
||||
},
|
||||
{
|
||||
"identity": "fluxer-native-publisher-8360",
|
||||
"trackCount": 3,
|
||||
"tracks": [
|
||||
{
|
||||
"sid": "TR_AMSaSBEwb9cjwL",
|
||||
"name": "mic",
|
||||
"kind": "audio",
|
||||
"source": "microphone",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_Ash3ybc8XXbukk",
|
||||
"name": "screen-audio",
|
||||
"kind": "audio",
|
||||
"source": "screenshareAudio",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_VSzotHy6zMQsRG",
|
||||
"name": "screen",
|
||||
"kind": "video",
|
||||
"source": "screenshare",
|
||||
"mimeType": "video/VP8",
|
||||
"muted": false
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"lastVideoMeta": {
|
||||
"participantSid": "PA_iYVBCmnrZuSb",
|
||||
"trackSid": "TR_VSzotHy6zMQsRG",
|
||||
"width": 640,
|
||||
"height": 360,
|
||||
"timestampUs": 2053643000
|
||||
},
|
||||
"publisherStats": {
|
||||
"rttMs": 1,
|
||||
"outbound": [
|
||||
{
|
||||
"trackSid": "TR_AMSaSBEwb9cjwL",
|
||||
"source": "microphone",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 99,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_Ash3ybc8XXbukk",
|
||||
"source": "screenshareAudio",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 265.1,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_VSzotHy6zMQsRG",
|
||||
"source": "screenshare",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 2414.2,
|
||||
"packetsLost": 0,
|
||||
"fps": 29,
|
||||
"codec": "video/VP8"
|
||||
}
|
||||
],
|
||||
"inbound": [],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 0,
|
||||
"outgoingVideoFramesProduced": 329,
|
||||
"outgoingVideoFramesAccepted": 329,
|
||||
"outgoingVideoFramesDropped": 13,
|
||||
"outgoingVideoFramesCoalesced": 13,
|
||||
"outgoingVideoFramesCaptured": 316,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 28.84,
|
||||
"outgoingVideoTargetFps": 30,
|
||||
"outgoingVideoMaxQueueAgeMs": 34,
|
||||
"outgoingVideoMaxPushLatencyMs": 35,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 42,
|
||||
"adaptiveSendTier": "full",
|
||||
"adaptiveSendReason": "stable"
|
||||
}
|
||||
},
|
||||
"secondaryPublisherStats": null,
|
||||
"subscriberStats": {
|
||||
"rttMs": 1,
|
||||
"outbound": [],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_iYVBCmnrZuSb",
|
||||
"trackSid": "TR_Ash3ybc8XXbukk",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 265.1,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 1,
|
||||
"audioLevel": 0.318,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_iYVBCmnrZuSb",
|
||||
"trackSid": "TR_AMSaSBEwb9cjwL",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 99,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 1,
|
||||
"audioLevel": 0.324,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_iYVBCmnrZuSb",
|
||||
"trackSid": "TR_VSzotHy6zMQsRG",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 2414.2,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 4,
|
||||
"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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+391
@@ -0,0 +1,391 @@
|
||||
{
|
||||
"status": "fail",
|
||||
"startedAt": "2026-06-05T22:35:40.815Z",
|
||||
"endedAt": "2026-06-05T22:36:13.026Z",
|
||||
"platform": "win32",
|
||||
"arch": "arm64",
|
||||
"config": {
|
||||
"url": "ws://100.79.83.54:17880",
|
||||
"serverApiUrl": "http://100.79.83.54:17880",
|
||||
"apiKey": "devkey",
|
||||
"room": "fluxer-webrtc-harness-6332-943a2620-7cc8-4881-b1a9-6d8577e9c434",
|
||||
"externalTokens": false,
|
||||
"publisherIdentity": "fluxer-native-publisher-6332",
|
||||
"secondaryPublisherIdentity": "fluxer-native-publisher-2-6332",
|
||||
"subscriberIdentity": "fluxer-native-subscriber-6332",
|
||||
"required": true,
|
||||
"strict": true,
|
||||
"timeoutMs": 120000,
|
||||
"connectTimeoutMs": 30000,
|
||||
"disconnectTimeoutMs": 10000,
|
||||
"probeTimeoutMs": 1500,
|
||||
"durationMs": 30000,
|
||||
"width": 640,
|
||||
"height": 360,
|
||||
"expectedWidth": 640,
|
||||
"expectedHeight": 360,
|
||||
"fps": 30,
|
||||
"minFpsRatio": 0.95,
|
||||
"maxFrameGapMs": 250,
|
||||
"maxAudioFrameGapMs": 250,
|
||||
"maxAvDriftMs": 150,
|
||||
"maxPacketLoss": 0,
|
||||
"requireStableResolution": true,
|
||||
"videoPattern": "gradient",
|
||||
"videoInput": "bgra",
|
||||
"subscriberVideoQuality": null,
|
||||
"screenCodecs": ["vp8"],
|
||||
"expectedScreenCodecs": ["vp8"],
|
||||
"codec": "vp8",
|
||||
"expectedScreenCodec": "video/VP8",
|
||||
"secondaryPublisher": false,
|
||||
"secondaryPublisherCodec": "vp8",
|
||||
"secondaryPublisherCodecExplicit": false,
|
||||
"expectedSecondaryPublisherCodec": "video/VP8",
|
||||
"expectedSecondaryPublisherCodecExplicit": false,
|
||||
"screenSimulcast": false,
|
||||
"secondaryPublisherScreenSimulcast": false,
|
||||
"adaptiveSend": true,
|
||||
"minVideoFps": 15,
|
||||
"minResolutionScale": 0.5,
|
||||
"maxAudioBufferMs": 750,
|
||||
"secondaryPublisherMicrophone": true,
|
||||
"secondaryPublisherScreenAudio": true,
|
||||
"maxBitrateBps": 5000000,
|
||||
"sampleRate": 48000,
|
||||
"channels": 1,
|
||||
"audioChunkMs": 20,
|
||||
"microphone": true,
|
||||
"screenAudio": true,
|
||||
"dataPacket": true,
|
||||
"subscriptionCycle": true,
|
||||
"validateServerPublishing": true,
|
||||
"camera": false,
|
||||
"cameraDeviceId": null,
|
||||
"expectedCameraCodec": null,
|
||||
"expectedHardwareEncoder": null,
|
||||
"reportPath": "C:\\Mac\\Home\\Development\\fluxer\\fluxer_desktop\\native-media-reports\\windows-parallels-arm64\\vp8-360p30-strict-single-20260605.json",
|
||||
"verbose": false,
|
||||
"scenarioName": "codec-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 >= 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 640x360",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber aggregate inbound audio frames >= 6",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio stats count >= 2",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher local microphone publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote microphone subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio frames >= 6",
|
||||
"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": "subscriber data packet received",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screenshare codec video/VP8",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video codec video/VP8",
|
||||
"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
|
||||
}
|
||||
],
|
||||
"skippedReason": null,
|
||||
"error": "received FPS 15.03 below 28.5",
|
||||
"hardwareEncoder": {
|
||||
"available": false,
|
||||
"backend": "none",
|
||||
"compiled": true,
|
||||
"runtime": false,
|
||||
"codecs": [],
|
||||
"zeroCopy": false,
|
||||
"nativeInputs": [],
|
||||
"reason": "runtime_prerequisite_missing",
|
||||
"detail": "missing nvcuda.dll, nvEncodeAPI64.dll"
|
||||
},
|
||||
"metrics": {
|
||||
"inboundAudioFrames": 6168,
|
||||
"inboundVideoFrames": 461,
|
||||
"strictAudioFrames": 299,
|
||||
"strictVideoFrames": 451,
|
||||
"videoCallbacks": 461,
|
||||
"videoBytes": 159321600,
|
||||
"receivedFps": 15.03,
|
||||
"requiredFps": 28.5,
|
||||
"maxVideoFrameGapMs": 137,
|
||||
"maxAudioFrameGapMs": 110,
|
||||
"maxVideoFrameGapOverallMs": 137,
|
||||
"maxAudioFrameGapOverallMs": 110,
|
||||
"avDriftMs": 22,
|
||||
"maxObservedPacketLoss": 0,
|
||||
"maxObservedPacketLossDelta": 0,
|
||||
"videoResolutionCounts": {
|
||||
"640x360": 451
|
||||
},
|
||||
"videoResolutionMismatchCount": 0,
|
||||
"droppedVideoFrameCallbacks": 0,
|
||||
"publisherVideoPump": {
|
||||
"input": "bgra",
|
||||
"pattern": "gradient",
|
||||
"targetFps": 30,
|
||||
"startedAtMs": 1780698941926,
|
||||
"stoppedAtMs": null,
|
||||
"framesPushed": 933,
|
||||
"framesRejected": 0,
|
||||
"errors": 0,
|
||||
"maxPushGapMs": 63,
|
||||
"lastPushAtMs": 1780698972994,
|
||||
"elapsedMs": 31105,
|
||||
"producedFps": 30
|
||||
},
|
||||
"secondaryPublisherVideoPump": null,
|
||||
"serverPublishing": {
|
||||
"fetchedAtMs": 1780698943004,
|
||||
"error": null,
|
||||
"participants": [
|
||||
{
|
||||
"identity": "fluxer-native-subscriber-6332",
|
||||
"trackCount": 0,
|
||||
"tracks": []
|
||||
},
|
||||
{
|
||||
"identity": "fluxer-native-publisher-6332",
|
||||
"trackCount": 3,
|
||||
"tracks": [
|
||||
{
|
||||
"sid": "TR_VSBtiuMi7Xz4iL",
|
||||
"name": "screen",
|
||||
"kind": "video",
|
||||
"source": "screenshare",
|
||||
"mimeType": "video/VP8",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_AsSNqz63GYafY3",
|
||||
"name": "screen-audio",
|
||||
"kind": "audio",
|
||||
"source": "screenshareAudio",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_AMjupdo38YrBp7",
|
||||
"name": "mic",
|
||||
"kind": "audio",
|
||||
"source": "microphone",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"lastVideoMeta": {
|
||||
"participantSid": "PA_FcwLkjDchP7J",
|
||||
"trackSid": "TR_VSBtiuMi7Xz4iL",
|
||||
"width": 640,
|
||||
"height": 360,
|
||||
"timestampUs": 1850800000
|
||||
},
|
||||
"publisherStats": {
|
||||
"rttMs": 2,
|
||||
"outbound": [
|
||||
{
|
||||
"trackSid": "TR_AsSNqz63GYafY3",
|
||||
"source": "screenshareAudio",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 261.4,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_AMjupdo38YrBp7",
|
||||
"source": "microphone",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 99.5,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_VSBtiuMi7Xz4iL",
|
||||
"source": "screenshare",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 1258.5,
|
||||
"packetsLost": 0,
|
||||
"fps": 15,
|
||||
"codec": "video/VP8"
|
||||
}
|
||||
],
|
||||
"inbound": [],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 1,
|
||||
"outgoingVideoFramesProduced": 930,
|
||||
"outgoingVideoFramesAccepted": 930,
|
||||
"outgoingVideoFramesDropped": 402,
|
||||
"outgoingVideoFramesCoalesced": 402,
|
||||
"outgoingVideoFramesCaptured": 527,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 17,
|
||||
"outgoingVideoTargetFps": 15,
|
||||
"outgoingVideoMaxQueueAgeMs": 62,
|
||||
"outgoingVideoMaxPushLatencyMs": 62,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 60,
|
||||
"adaptiveSendTier": "fps15",
|
||||
"adaptiveSendReason": "stable"
|
||||
}
|
||||
},
|
||||
"secondaryPublisherStats": null,
|
||||
"subscriberStats": {
|
||||
"rttMs": 2,
|
||||
"outbound": [],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_FcwLkjDchP7J",
|
||||
"trackSid": "TR_AsSNqz63GYafY3",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 261.4,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 2,
|
||||
"audioLevel": 0.319,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_FcwLkjDchP7J",
|
||||
"trackSid": "TR_AMjupdo38YrBp7",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 99.5,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 1,
|
||||
"audioLevel": 0.32,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_FcwLkjDchP7J",
|
||||
"trackSid": "TR_VSBtiuMi7Xz4iL",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 1258.5,
|
||||
"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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+391
@@ -0,0 +1,391 @@
|
||||
{
|
||||
"status": "fail",
|
||||
"startedAt": "2026-06-05T22:39:58.041Z",
|
||||
"endedAt": "2026-06-05T22:40:30.271Z",
|
||||
"platform": "win32",
|
||||
"arch": "arm64",
|
||||
"config": {
|
||||
"url": "ws://100.79.83.54:17880",
|
||||
"serverApiUrl": "http://100.79.83.54:17880",
|
||||
"apiKey": "devkey",
|
||||
"room": "fluxer-webrtc-harness-3512-db87cf14-fb04-4daf-84ee-a577ef39b456",
|
||||
"externalTokens": false,
|
||||
"publisherIdentity": "fluxer-native-publisher-3512",
|
||||
"secondaryPublisherIdentity": "fluxer-native-publisher-2-3512",
|
||||
"subscriberIdentity": "fluxer-native-subscriber-3512",
|
||||
"required": true,
|
||||
"strict": true,
|
||||
"timeoutMs": 120000,
|
||||
"connectTimeoutMs": 30000,
|
||||
"disconnectTimeoutMs": 10000,
|
||||
"probeTimeoutMs": 1500,
|
||||
"durationMs": 30000,
|
||||
"width": 640,
|
||||
"height": 360,
|
||||
"expectedWidth": 640,
|
||||
"expectedHeight": 360,
|
||||
"fps": 30,
|
||||
"minFpsRatio": 0.95,
|
||||
"maxFrameGapMs": 250,
|
||||
"maxAudioFrameGapMs": 250,
|
||||
"maxAvDriftMs": 150,
|
||||
"maxPacketLoss": 0,
|
||||
"requireStableResolution": true,
|
||||
"videoPattern": "gradient",
|
||||
"videoInput": "bgra",
|
||||
"subscriberVideoQuality": null,
|
||||
"screenCodecs": ["vp8"],
|
||||
"expectedScreenCodecs": ["vp8"],
|
||||
"codec": "vp8",
|
||||
"expectedScreenCodec": "video/VP8",
|
||||
"secondaryPublisher": false,
|
||||
"secondaryPublisherCodec": "vp8",
|
||||
"secondaryPublisherCodecExplicit": false,
|
||||
"expectedSecondaryPublisherCodec": "video/VP8",
|
||||
"expectedSecondaryPublisherCodecExplicit": false,
|
||||
"screenSimulcast": false,
|
||||
"secondaryPublisherScreenSimulcast": false,
|
||||
"adaptiveSend": true,
|
||||
"minVideoFps": 15,
|
||||
"minResolutionScale": 0.5,
|
||||
"maxAudioBufferMs": 750,
|
||||
"secondaryPublisherMicrophone": true,
|
||||
"secondaryPublisherScreenAudio": true,
|
||||
"maxBitrateBps": 5000000,
|
||||
"sampleRate": 48000,
|
||||
"channels": 1,
|
||||
"audioChunkMs": 20,
|
||||
"microphone": true,
|
||||
"screenAudio": true,
|
||||
"dataPacket": true,
|
||||
"subscriptionCycle": true,
|
||||
"validateServerPublishing": true,
|
||||
"camera": false,
|
||||
"cameraDeviceId": null,
|
||||
"expectedCameraCodec": null,
|
||||
"expectedHardwareEncoder": null,
|
||||
"reportPath": "C:\\Mac\\Home\\Development\\fluxer\\fluxer_desktop\\native-media-reports\\windows-parallels-arm64\\vp8-360p30-strict-single-after-fix-20260605.json",
|
||||
"verbose": false,
|
||||
"scenarioName": "codec-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 >= 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 640x360",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber aggregate inbound audio frames >= 6",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio stats count >= 2",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher local microphone publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote microphone subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio frames >= 6",
|
||||
"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": "subscriber data packet received",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screenshare codec video/VP8",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video codec video/VP8",
|
||||
"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
|
||||
}
|
||||
],
|
||||
"skippedReason": null,
|
||||
"error": "received FPS 16.35 below 28.5",
|
||||
"hardwareEncoder": {
|
||||
"available": false,
|
||||
"backend": "none",
|
||||
"compiled": true,
|
||||
"runtime": false,
|
||||
"codecs": [],
|
||||
"zeroCopy": false,
|
||||
"nativeInputs": [],
|
||||
"reason": "runtime_prerequisite_missing",
|
||||
"detail": "missing nvcuda.dll, nvEncodeAPI64.dll"
|
||||
},
|
||||
"metrics": {
|
||||
"inboundAudioFrames": 6178,
|
||||
"inboundVideoFrames": 503,
|
||||
"strictAudioFrames": 297,
|
||||
"strictVideoFrames": 490,
|
||||
"videoCallbacks": 503,
|
||||
"videoBytes": 173836800,
|
||||
"receivedFps": 16.35,
|
||||
"requiredFps": 28.5,
|
||||
"maxVideoFrameGapMs": 244,
|
||||
"maxAudioFrameGapMs": 180,
|
||||
"maxVideoFrameGapOverallMs": 244,
|
||||
"maxAudioFrameGapOverallMs": 180,
|
||||
"avDriftMs": 60,
|
||||
"maxObservedPacketLoss": 0,
|
||||
"maxObservedPacketLossDelta": 0,
|
||||
"videoResolutionCounts": {
|
||||
"640x360": 490
|
||||
},
|
||||
"videoResolutionMismatchCount": 0,
|
||||
"droppedVideoFrameCallbacks": 0,
|
||||
"publisherVideoPump": {
|
||||
"input": "bgra",
|
||||
"pattern": "gradient",
|
||||
"targetFps": 30,
|
||||
"startedAtMs": 1780699199141,
|
||||
"stoppedAtMs": null,
|
||||
"framesPushed": 931,
|
||||
"framesRejected": 0,
|
||||
"errors": 0,
|
||||
"maxPushGapMs": 155,
|
||||
"lastPushAtMs": 1780699230263,
|
||||
"elapsedMs": 31136,
|
||||
"producedFps": 29.9
|
||||
},
|
||||
"secondaryPublisherVideoPump": null,
|
||||
"serverPublishing": {
|
||||
"fetchedAtMs": 1780699200252,
|
||||
"error": null,
|
||||
"participants": [
|
||||
{
|
||||
"identity": "fluxer-native-publisher-3512",
|
||||
"trackCount": 3,
|
||||
"tracks": [
|
||||
{
|
||||
"sid": "TR_VSFLKMrtaZRUAL",
|
||||
"name": "screen",
|
||||
"kind": "video",
|
||||
"source": "screenshare",
|
||||
"mimeType": "video/VP8",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_AMTrMJygXoaHT8",
|
||||
"name": "mic",
|
||||
"kind": "audio",
|
||||
"source": "microphone",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_AseREdJhgwsKHc",
|
||||
"name": "screen-audio",
|
||||
"kind": "audio",
|
||||
"source": "screenshareAudio",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"identity": "fluxer-native-subscriber-3512",
|
||||
"trackCount": 0,
|
||||
"tracks": []
|
||||
}
|
||||
]
|
||||
},
|
||||
"lastVideoMeta": {
|
||||
"participantSid": "PA_BbRoKiddPYPe",
|
||||
"trackSid": "TR_VSFLKMrtaZRUAL",
|
||||
"width": 640,
|
||||
"height": 360,
|
||||
"timestampUs": 2108079000
|
||||
},
|
||||
"publisherStats": {
|
||||
"rttMs": 1,
|
||||
"outbound": [
|
||||
{
|
||||
"trackSid": "TR_VSFLKMrtaZRUAL",
|
||||
"source": "screenshare",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 1257.6,
|
||||
"packetsLost": 0,
|
||||
"fps": 15,
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_AseREdJhgwsKHc",
|
||||
"source": "screenshareAudio",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 257.1,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_AMTrMJygXoaHT8",
|
||||
"source": "microphone",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 99.1,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
}
|
||||
],
|
||||
"inbound": [],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 1,
|
||||
"outgoingVideoFramesProduced": 927,
|
||||
"outgoingVideoFramesAccepted": 927,
|
||||
"outgoingVideoFramesDropped": 405,
|
||||
"outgoingVideoFramesCoalesced": 405,
|
||||
"outgoingVideoFramesCaptured": 521,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 16.8,
|
||||
"outgoingVideoTargetFps": 15,
|
||||
"outgoingVideoMaxQueueAgeMs": 74,
|
||||
"outgoingVideoMaxPushLatencyMs": 76,
|
||||
"outgoingAudioBufferTargetMs": 300,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 1,
|
||||
"outgoingAudioMaxFrameGapMs": 153,
|
||||
"adaptiveSendTier": "fps15",
|
||||
"adaptiveSendReason": "sendLatencyPressure"
|
||||
}
|
||||
},
|
||||
"secondaryPublisherStats": null,
|
||||
"subscriberStats": {
|
||||
"rttMs": 1,
|
||||
"outbound": [],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_BbRoKiddPYPe",
|
||||
"trackSid": "TR_AseREdJhgwsKHc",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 252.8,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 1,
|
||||
"audioLevel": 0.337,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_BbRoKiddPYPe",
|
||||
"trackSid": "TR_VSFLKMrtaZRUAL",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 1169,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 3,
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_BbRoKiddPYPe",
|
||||
"trackSid": "TR_AMTrMJygXoaHT8",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 97.5,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 1,
|
||||
"audioLevel": 0.315,
|
||||
"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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+391
@@ -0,0 +1,391 @@
|
||||
{
|
||||
"status": "fail",
|
||||
"startedAt": "2026-06-05T22:31:55.148Z",
|
||||
"endedAt": "2026-06-05T22:32:27.616Z",
|
||||
"platform": "win32",
|
||||
"arch": "arm64",
|
||||
"config": {
|
||||
"url": "ws://100.79.83.54:17880",
|
||||
"serverApiUrl": "http://100.79.83.54:17880",
|
||||
"apiKey": "devkey",
|
||||
"room": "fluxer-webrtc-harness-1340-0367e318-dcfc-498a-8724-0c3982583d5d",
|
||||
"externalTokens": false,
|
||||
"publisherIdentity": "fluxer-native-publisher-1340",
|
||||
"secondaryPublisherIdentity": "fluxer-native-publisher-2-1340",
|
||||
"subscriberIdentity": "fluxer-native-subscriber-1340",
|
||||
"required": true,
|
||||
"strict": true,
|
||||
"timeoutMs": 120000,
|
||||
"connectTimeoutMs": 30000,
|
||||
"disconnectTimeoutMs": 10000,
|
||||
"probeTimeoutMs": 1500,
|
||||
"durationMs": 30000,
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"expectedWidth": 1280,
|
||||
"expectedHeight": 720,
|
||||
"fps": 15,
|
||||
"minFpsRatio": 0.95,
|
||||
"maxFrameGapMs": 250,
|
||||
"maxAudioFrameGapMs": 250,
|
||||
"maxAvDriftMs": 150,
|
||||
"maxPacketLoss": 0,
|
||||
"requireStableResolution": true,
|
||||
"videoPattern": "gradient",
|
||||
"videoInput": "bgra",
|
||||
"subscriberVideoQuality": null,
|
||||
"screenCodecs": ["vp8"],
|
||||
"expectedScreenCodecs": ["vp8"],
|
||||
"codec": "vp8",
|
||||
"expectedScreenCodec": "video/VP8",
|
||||
"secondaryPublisher": false,
|
||||
"secondaryPublisherCodec": "vp8",
|
||||
"secondaryPublisherCodecExplicit": false,
|
||||
"expectedSecondaryPublisherCodec": "video/VP8",
|
||||
"expectedSecondaryPublisherCodecExplicit": false,
|
||||
"screenSimulcast": false,
|
||||
"secondaryPublisherScreenSimulcast": false,
|
||||
"adaptiveSend": true,
|
||||
"minVideoFps": 15,
|
||||
"minResolutionScale": 0.5,
|
||||
"maxAudioBufferMs": 750,
|
||||
"secondaryPublisherMicrophone": true,
|
||||
"secondaryPublisherScreenAudio": true,
|
||||
"maxBitrateBps": 8000000,
|
||||
"sampleRate": 48000,
|
||||
"channels": 1,
|
||||
"audioChunkMs": 20,
|
||||
"microphone": true,
|
||||
"screenAudio": true,
|
||||
"dataPacket": true,
|
||||
"subscriptionCycle": true,
|
||||
"validateServerPublishing": true,
|
||||
"camera": false,
|
||||
"cameraDeviceId": null,
|
||||
"expectedCameraCodec": null,
|
||||
"expectedHardwareEncoder": null,
|
||||
"reportPath": "C:\\Mac\\Home\\Development\\fluxer\\fluxer_desktop\\native-media-reports\\windows-parallels-arm64\\vp8-720p15-strict-single-20260605.json",
|
||||
"verbose": false,
|
||||
"scenarioName": "codec-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 >= 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": "subscriber aggregate inbound audio frames >= 6",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio stats count >= 2",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher local microphone publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote microphone subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio frames >= 6",
|
||||
"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": "subscriber data packet received",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screenshare codec video/VP8",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video codec video/VP8",
|
||||
"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
|
||||
}
|
||||
],
|
||||
"skippedReason": null,
|
||||
"error": "received FPS 11.06 below 14.25; max video frame gap 363ms exceeds 250ms",
|
||||
"hardwareEncoder": {
|
||||
"available": false,
|
||||
"backend": "none",
|
||||
"compiled": true,
|
||||
"runtime": false,
|
||||
"codecs": [],
|
||||
"zeroCopy": false,
|
||||
"nativeInputs": [],
|
||||
"reason": "runtime_prerequisite_missing",
|
||||
"detail": "missing nvcuda.dll, nvEncodeAPI64.dll"
|
||||
},
|
||||
"metrics": {
|
||||
"inboundAudioFrames": 6230,
|
||||
"inboundVideoFrames": 334,
|
||||
"strictAudioFrames": 298,
|
||||
"strictVideoFrames": 331,
|
||||
"videoCallbacks": 334,
|
||||
"videoBytes": 461721600,
|
||||
"receivedFps": 11.06,
|
||||
"requiredFps": 14.25,
|
||||
"maxVideoFrameGapMs": 363,
|
||||
"maxAudioFrameGapMs": 108,
|
||||
"maxVideoFrameGapOverallMs": 363,
|
||||
"maxAudioFrameGapOverallMs": 108,
|
||||
"avDriftMs": 38,
|
||||
"maxObservedPacketLoss": 0,
|
||||
"maxObservedPacketLossDelta": 0,
|
||||
"videoResolutionCounts": {
|
||||
"1280x720": 331
|
||||
},
|
||||
"videoResolutionMismatchCount": 0,
|
||||
"droppedVideoFrameCallbacks": 0,
|
||||
"publisherVideoPump": {
|
||||
"input": "bgra",
|
||||
"pattern": "gradient",
|
||||
"targetFps": 15,
|
||||
"startedAtMs": 1780698716263,
|
||||
"stoppedAtMs": null,
|
||||
"framesPushed": 471,
|
||||
"framesRejected": 0,
|
||||
"errors": 0,
|
||||
"maxPushGapMs": 93,
|
||||
"lastPushAtMs": 1780698747600,
|
||||
"elapsedMs": 31355,
|
||||
"producedFps": 15.02
|
||||
},
|
||||
"secondaryPublisherVideoPump": null,
|
||||
"serverPublishing": {
|
||||
"fetchedAtMs": 1780698717342,
|
||||
"error": null,
|
||||
"participants": [
|
||||
{
|
||||
"identity": "fluxer-native-subscriber-1340",
|
||||
"trackCount": 0,
|
||||
"tracks": []
|
||||
},
|
||||
{
|
||||
"identity": "fluxer-native-publisher-1340",
|
||||
"trackCount": 3,
|
||||
"tracks": [
|
||||
{
|
||||
"sid": "TR_VSYp54vvSodQtk",
|
||||
"name": "screen",
|
||||
"kind": "video",
|
||||
"source": "screenshare",
|
||||
"mimeType": "video/VP8",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_AMtAPT5gLdZFiG",
|
||||
"name": "mic",
|
||||
"kind": "audio",
|
||||
"source": "microphone",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_AsyzCPFpjfCZ52",
|
||||
"name": "screen-audio",
|
||||
"kind": "audio",
|
||||
"source": "screenshareAudio",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"lastVideoMeta": {
|
||||
"participantSid": "PA_f3pUVwWqpSf9",
|
||||
"trackSid": "TR_VSYp54vvSodQtk",
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"timestampUs": 1625403000
|
||||
},
|
||||
"publisherStats": {
|
||||
"rttMs": 3,
|
||||
"outbound": [
|
||||
{
|
||||
"trackSid": "TR_AsyzCPFpjfCZ52",
|
||||
"source": "screenshareAudio",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 324.8,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_VSYp54vvSodQtk",
|
||||
"source": "screenshare",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 5042,
|
||||
"packetsLost": 0,
|
||||
"fps": 15,
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_AMtAPT5gLdZFiG",
|
||||
"source": "microphone",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 99.4,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
}
|
||||
],
|
||||
"inbound": [],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 0,
|
||||
"outgoingVideoFramesProduced": 465,
|
||||
"outgoingVideoFramesAccepted": 465,
|
||||
"outgoingVideoFramesDropped": 9,
|
||||
"outgoingVideoFramesCoalesced": 9,
|
||||
"outgoingVideoFramesCaptured": 456,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 14.71,
|
||||
"outgoingVideoTargetFps": 15,
|
||||
"outgoingVideoMaxQueueAgeMs": 66,
|
||||
"outgoingVideoMaxPushLatencyMs": 68,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 47,
|
||||
"adaptiveSendTier": "full",
|
||||
"adaptiveSendReason": "stable"
|
||||
}
|
||||
},
|
||||
"secondaryPublisherStats": null,
|
||||
"subscriberStats": {
|
||||
"rttMs": 3,
|
||||
"outbound": [],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_f3pUVwWqpSf9",
|
||||
"trackSid": "TR_AMtAPT5gLdZFiG",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 99.4,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 2,
|
||||
"audioLevel": 0.32,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_f3pUVwWqpSf9",
|
||||
"trackSid": "TR_VSYp54vvSodQtk",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 5042,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 33,
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_f3pUVwWqpSf9",
|
||||
"trackSid": "TR_AsyzCPFpjfCZ52",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 324.8,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 1,
|
||||
"audioLevel": 0.344,
|
||||
"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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+391
@@ -0,0 +1,391 @@
|
||||
{
|
||||
"status": "fail",
|
||||
"startedAt": "2026-06-05T22:30:59.267Z",
|
||||
"endedAt": "2026-06-05T22:31:31.489Z",
|
||||
"platform": "win32",
|
||||
"arch": "arm64",
|
||||
"config": {
|
||||
"url": "ws://100.79.83.54:17880",
|
||||
"serverApiUrl": "http://100.79.83.54:17880",
|
||||
"apiKey": "devkey",
|
||||
"room": "fluxer-webrtc-harness-5096-0b21498f-6c31-4ed8-8e45-930895fdc2d2",
|
||||
"externalTokens": false,
|
||||
"publisherIdentity": "fluxer-native-publisher-5096",
|
||||
"secondaryPublisherIdentity": "fluxer-native-publisher-2-5096",
|
||||
"subscriberIdentity": "fluxer-native-subscriber-5096",
|
||||
"required": true,
|
||||
"strict": true,
|
||||
"timeoutMs": 120000,
|
||||
"connectTimeoutMs": 30000,
|
||||
"disconnectTimeoutMs": 10000,
|
||||
"probeTimeoutMs": 1500,
|
||||
"durationMs": 30000,
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"expectedWidth": 1280,
|
||||
"expectedHeight": 720,
|
||||
"fps": 30,
|
||||
"minFpsRatio": 0.95,
|
||||
"maxFrameGapMs": 250,
|
||||
"maxAudioFrameGapMs": 250,
|
||||
"maxAvDriftMs": 150,
|
||||
"maxPacketLoss": 0,
|
||||
"requireStableResolution": true,
|
||||
"videoPattern": "gradient",
|
||||
"videoInput": "bgra",
|
||||
"subscriberVideoQuality": null,
|
||||
"screenCodecs": ["vp8"],
|
||||
"expectedScreenCodecs": ["vp8"],
|
||||
"codec": "vp8",
|
||||
"expectedScreenCodec": "video/VP8",
|
||||
"secondaryPublisher": false,
|
||||
"secondaryPublisherCodec": "vp8",
|
||||
"secondaryPublisherCodecExplicit": false,
|
||||
"expectedSecondaryPublisherCodec": "video/VP8",
|
||||
"expectedSecondaryPublisherCodecExplicit": false,
|
||||
"screenSimulcast": false,
|
||||
"secondaryPublisherScreenSimulcast": false,
|
||||
"adaptiveSend": true,
|
||||
"minVideoFps": 15,
|
||||
"minResolutionScale": 0.5,
|
||||
"maxAudioBufferMs": 750,
|
||||
"secondaryPublisherMicrophone": true,
|
||||
"secondaryPublisherScreenAudio": true,
|
||||
"maxBitrateBps": 8000000,
|
||||
"sampleRate": 48000,
|
||||
"channels": 1,
|
||||
"audioChunkMs": 20,
|
||||
"microphone": true,
|
||||
"screenAudio": true,
|
||||
"dataPacket": true,
|
||||
"subscriptionCycle": true,
|
||||
"validateServerPublishing": true,
|
||||
"camera": false,
|
||||
"cameraDeviceId": null,
|
||||
"expectedCameraCodec": null,
|
||||
"expectedHardwareEncoder": null,
|
||||
"reportPath": "C:\\Mac\\Home\\Development\\fluxer\\fluxer_desktop\\native-media-reports\\windows-parallels-arm64\\vp8-720p30-strict-single-20260605.json",
|
||||
"verbose": false,
|
||||
"scenarioName": "codec-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 >= 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": "subscriber aggregate inbound audio frames >= 6",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio stats count >= 2",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher local microphone publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote microphone subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio frames >= 6",
|
||||
"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": "subscriber data packet received",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screenshare codec video/VP8",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video codec video/VP8",
|
||||
"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
|
||||
}
|
||||
],
|
||||
"skippedReason": null,
|
||||
"error": "received FPS 15.97 below 28.5",
|
||||
"hardwareEncoder": {
|
||||
"available": false,
|
||||
"backend": "none",
|
||||
"compiled": true,
|
||||
"runtime": false,
|
||||
"codecs": [],
|
||||
"zeroCopy": false,
|
||||
"nativeInputs": [],
|
||||
"reason": "runtime_prerequisite_missing",
|
||||
"detail": "missing nvcuda.dll, nvEncodeAPI64.dll"
|
||||
},
|
||||
"metrics": {
|
||||
"inboundAudioFrames": 6178,
|
||||
"inboundVideoFrames": 482,
|
||||
"strictAudioFrames": 298,
|
||||
"strictVideoFrames": 479,
|
||||
"videoCallbacks": 482,
|
||||
"videoBytes": 666316800,
|
||||
"receivedFps": 15.97,
|
||||
"requiredFps": 28.5,
|
||||
"maxVideoFrameGapMs": 102,
|
||||
"maxAudioFrameGapMs": 130,
|
||||
"maxVideoFrameGapOverallMs": 168,
|
||||
"maxAudioFrameGapOverallMs": 130,
|
||||
"avDriftMs": 43,
|
||||
"maxObservedPacketLoss": 0,
|
||||
"maxObservedPacketLossDelta": 0,
|
||||
"videoResolutionCounts": {
|
||||
"1280x720": 479
|
||||
},
|
||||
"videoResolutionMismatchCount": 0,
|
||||
"droppedVideoFrameCallbacks": 0,
|
||||
"publisherVideoPump": {
|
||||
"input": "bgra",
|
||||
"pattern": "gradient",
|
||||
"targetFps": 30,
|
||||
"startedAtMs": 1780698660405,
|
||||
"stoppedAtMs": null,
|
||||
"framesPushed": 933,
|
||||
"framesRejected": 0,
|
||||
"errors": 0,
|
||||
"maxPushGapMs": 68,
|
||||
"lastPushAtMs": 1780698691475,
|
||||
"elapsedMs": 31087,
|
||||
"producedFps": 30.01
|
||||
},
|
||||
"secondaryPublisherVideoPump": null,
|
||||
"serverPublishing": {
|
||||
"fetchedAtMs": 1780698661479,
|
||||
"error": null,
|
||||
"participants": [
|
||||
{
|
||||
"identity": "fluxer-native-subscriber-5096",
|
||||
"trackCount": 0,
|
||||
"tracks": []
|
||||
},
|
||||
{
|
||||
"identity": "fluxer-native-publisher-5096",
|
||||
"trackCount": 3,
|
||||
"tracks": [
|
||||
{
|
||||
"sid": "TR_VS2iFXiujdx95V",
|
||||
"name": "screen",
|
||||
"kind": "video",
|
||||
"source": "screenshare",
|
||||
"mimeType": "video/VP8",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_AMNf9uVyTmBcZy",
|
||||
"name": "mic",
|
||||
"kind": "audio",
|
||||
"source": "microphone",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_AsZpfieifQxEYA",
|
||||
"name": "screen-audio",
|
||||
"kind": "audio",
|
||||
"source": "screenshareAudio",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"lastVideoMeta": {
|
||||
"participantSid": "PA_XJp9ZzhWYzHd",
|
||||
"trackSid": "TR_VS2iFXiujdx95V",
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"timestampUs": 1569321000
|
||||
},
|
||||
"publisherStats": {
|
||||
"rttMs": 1,
|
||||
"outbound": [
|
||||
{
|
||||
"trackSid": "TR_AMNf9uVyTmBcZy",
|
||||
"source": "microphone",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 98.4,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_AsZpfieifQxEYA",
|
||||
"source": "screenshareAudio",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 269.5,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_VS2iFXiujdx95V",
|
||||
"source": "screenshare",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 5155.1,
|
||||
"packetsLost": 0,
|
||||
"fps": 15,
|
||||
"codec": "video/VP8"
|
||||
}
|
||||
],
|
||||
"inbound": [],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 1,
|
||||
"outgoingVideoFramesProduced": 930,
|
||||
"outgoingVideoFramesAccepted": 930,
|
||||
"outgoingVideoFramesDropped": 403,
|
||||
"outgoingVideoFramesCoalesced": 403,
|
||||
"outgoingVideoFramesCaptured": 526,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 16.97,
|
||||
"outgoingVideoTargetFps": 15,
|
||||
"outgoingVideoMaxQueueAgeMs": 45,
|
||||
"outgoingVideoMaxPushLatencyMs": 46,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 57,
|
||||
"adaptiveSendTier": "fps15",
|
||||
"adaptiveSendReason": "stable"
|
||||
}
|
||||
},
|
||||
"secondaryPublisherStats": null,
|
||||
"subscriberStats": {
|
||||
"rttMs": 3,
|
||||
"outbound": [],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_XJp9ZzhWYzHd",
|
||||
"trackSid": "TR_VS2iFXiujdx95V",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 5155.1,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 11,
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_XJp9ZzhWYzHd",
|
||||
"trackSid": "TR_AsZpfieifQxEYA",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 269.5,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 1,
|
||||
"audioLevel": 0.307,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_XJp9ZzhWYzHd",
|
||||
"trackSid": "TR_AMNf9uVyTmBcZy",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 98.4,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 1,
|
||||
"audioLevel": 0.336,
|
||||
"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