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:
@@ -0,0 +1,85 @@
|
||||
{
|
||||
"status": "skip",
|
||||
"startedAt": "2026-06-05T15:40:30.428Z",
|
||||
"endedAt": "2026-06-05T15:40:30.428Z",
|
||||
"platform": "linux",
|
||||
"arch": "arm64",
|
||||
"config": {
|
||||
"url": "ws://localhost:7880",
|
||||
"apiKey": "devkey",
|
||||
"room": "fluxer-webrtc-harness-38884-16b7fb75-22a2-4914-8e2d-255451c5b7e9",
|
||||
"required": false,
|
||||
"strict": false,
|
||||
"timeoutMs": 30000,
|
||||
"connectTimeoutMs": 30000,
|
||||
"disconnectTimeoutMs": 10000,
|
||||
"probeTimeoutMs": 1500,
|
||||
"durationMs": 0,
|
||||
"width": 320,
|
||||
"height": 180,
|
||||
"expectedWidth": 320,
|
||||
"expectedHeight": 180,
|
||||
"fps": 15,
|
||||
"minFpsRatio": 0,
|
||||
"maxFrameGapMs": 0,
|
||||
"maxAvDriftMs": 0,
|
||||
"screenCodecs": ["vp8"],
|
||||
"expectedScreenCodecs": ["vp8"],
|
||||
"codec": "vp8",
|
||||
"expectedScreenCodec": "video/VP8",
|
||||
"secondaryPublisher": false,
|
||||
"secondaryPublisherCodec": "vp8",
|
||||
"secondaryPublisherCodecExplicit": false,
|
||||
"expectedSecondaryPublisherCodec": "video/VP8",
|
||||
"expectedSecondaryPublisherCodecExplicit": false,
|
||||
"secondaryPublisherMicrophone": true,
|
||||
"secondaryPublisherScreenAudio": false,
|
||||
"maxBitrateBps": 400000,
|
||||
"sampleRate": 48000,
|
||||
"channels": 1,
|
||||
"audioChunkMs": 20,
|
||||
"microphone": true,
|
||||
"screenAudio": false,
|
||||
"dataPacket": false,
|
||||
"subscriptionCycle": false,
|
||||
"camera": false,
|
||||
"cameraDeviceId": null,
|
||||
"expectedCameraCodec": null,
|
||||
"expectedHardwareEncoder": null,
|
||||
"reportPath": "/workspaces/fluxer/fluxer_desktop/native-media-reports/2026-06-05T15-40-10-773Z/livekit-harness.json",
|
||||
"verbose": false,
|
||||
"scenarioName": "codec-vp8",
|
||||
"apiSecret": "<redacted>",
|
||||
"e2eeKey": null
|
||||
},
|
||||
"checks": [],
|
||||
"skippedReason": "LiveKit is unreachable at ws://localhost:7880 (connect ECONNREFUSED 127.0.0.1:7880)",
|
||||
"error": null,
|
||||
"hardwareEncoder": {
|
||||
"available": false,
|
||||
"backend": "none",
|
||||
"compiled": false,
|
||||
"runtime": false,
|
||||
"codecs": [],
|
||||
"zeroCopy": false,
|
||||
"nativeInputs": [],
|
||||
"reason": "nvenc_not_compiled",
|
||||
"detail": "CUDA headers were not found at build time; rebuild with CUDA_HOME pointing to a CUDA toolkit that contains include/cuda.h"
|
||||
},
|
||||
"metrics": {
|
||||
"inboundAudioFrames": 0,
|
||||
"inboundVideoFrames": 0,
|
||||
"videoCallbacks": 0,
|
||||
"videoBytes": 0,
|
||||
"receivedFps": 0,
|
||||
"requiredFps": null,
|
||||
"maxVideoFrameGapMs": 0,
|
||||
"maxAudioFrameGapMs": 0,
|
||||
"avDriftMs": null,
|
||||
"droppedVideoFrameCallbacks": 0,
|
||||
"lastVideoMeta": null,
|
||||
"publisherStats": null,
|
||||
"secondaryPublisherStats": null,
|
||||
"subscriberStats": null
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
+149
File diff suppressed because one or more lines are too long
+197
@@ -0,0 +1,197 @@
|
||||
{
|
||||
"status": "fail",
|
||||
"startedAt": "2026-06-06T22:15:58.713Z",
|
||||
"endedAt": "2026-06-06T22:16:28.718Z",
|
||||
"platform": "darwin",
|
||||
"arch": "arm64",
|
||||
"config": {
|
||||
"url": "ws://127.0.0.1:7880",
|
||||
"serverApiUrl": "http://127.0.0.1:7880",
|
||||
"apiKey": "devkey",
|
||||
"room": "fluxer-webrtc-harness-84586-8f492568-efae-42a1-a344-5a0c9599fa8d",
|
||||
"externalTokens": false,
|
||||
"publisherIdentity": "fluxer-native-publisher-84586",
|
||||
"secondaryPublisherIdentity": "fluxer-native-publisher-2-84586",
|
||||
"subscriberIdentity": "fluxer-native-subscriber-84586",
|
||||
"required": false,
|
||||
"strict": false,
|
||||
"timeoutMs": 30000,
|
||||
"connectTimeoutMs": 30000,
|
||||
"disconnectTimeoutMs": 10000,
|
||||
"probeTimeoutMs": 1500,
|
||||
"durationMs": 0,
|
||||
"width": 320,
|
||||
"height": 180,
|
||||
"expectedWidth": 320,
|
||||
"expectedHeight": 180,
|
||||
"fps": 15,
|
||||
"minFpsRatio": 0,
|
||||
"maxFrameGapMs": 0,
|
||||
"maxAudioFrameGapMs": 0,
|
||||
"maxAvDriftMs": 0,
|
||||
"maxPacketLoss": null,
|
||||
"requireStableResolution": false,
|
||||
"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": true,
|
||||
"secondaryPublisherScreenSimulcast": true,
|
||||
"adaptiveSend": true,
|
||||
"minVideoFps": 15,
|
||||
"minResolutionScale": 0.5,
|
||||
"maxAudioBufferMs": 750,
|
||||
"secondaryPublisherMicrophone": true,
|
||||
"secondaryPublisherScreenAudio": false,
|
||||
"maxBitrateBps": 400000,
|
||||
"sampleRate": 48000,
|
||||
"channels": 1,
|
||||
"audioChunkMs": 20,
|
||||
"microphone": true,
|
||||
"screenAudio": false,
|
||||
"dataPacket": false,
|
||||
"subscriptionCycle": false,
|
||||
"validateServerPublishing": false,
|
||||
"camera": false,
|
||||
"cameraDeviceId": null,
|
||||
"expectedCameraCodec": null,
|
||||
"expectedHardwareEncoder": null,
|
||||
"reportPath": "/Users/hampus/Development/fluxer/fluxer_desktop/native-media-reports/2026-06-06T22-15-48Z-codex-host-smoke-signed/livekit-harness.json",
|
||||
"verbose": false,
|
||||
"scenarioName": "codec-vp8",
|
||||
"apiSecret": "<redacted>",
|
||||
"e2eeKey": null,
|
||||
"publisherToken": null,
|
||||
"secondaryPublisherToken": null,
|
||||
"subscriberToken": null
|
||||
},
|
||||
"checks": [
|
||||
{
|
||||
"name": "publisher connected",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber connected",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"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 320x180",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber aggregate inbound audio frames >= 3",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio stats count >= 1",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "publisher local microphone publication",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote microphone subscription",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio frames >= 3",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound microphone stats",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio stats",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screenshare codec video/VP8",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video codec video/VP8",
|
||||
"pass": false
|
||||
}
|
||||
],
|
||||
"skippedReason": null,
|
||||
"error": "Error: connect timed out after 30000ms\n at file:///Users/hampus/Development/fluxer/fluxer_desktop/native/webrtc-sender/scripts/livekit-harness.mjs:1346:9\n at async runHarness (file:///Users/hampus/Development/fluxer/fluxer_desktop/native/webrtc-sender/scripts/livekit-harness.mjs:1773:3)\n at async main (file:///Users/hampus/Development/fluxer/fluxer_desktop/native/webrtc-sender/scripts/livekit-harness.mjs:2025:18)\n at async file:///Users/hampus/Development/fluxer/fluxer_desktop/native/webrtc-sender/scripts/livekit-harness.mjs:2058:19",
|
||||
"hardwareEncoder": {
|
||||
"available": true,
|
||||
"backend": "videotoolbox",
|
||||
"compiled": true,
|
||||
"runtime": true,
|
||||
"codecs": ["h264", "h265"],
|
||||
"zeroCopy": false,
|
||||
"nativeInputs": [],
|
||||
"detail": "VideoToolbox can create hardware-accelerated compression sessions for h264, h265; supported hardware-codec probe set: h264, h265"
|
||||
},
|
||||
"metrics": {
|
||||
"inboundAudioFrames": 0,
|
||||
"inboundVideoFrames": 0,
|
||||
"strictAudioFrames": 0,
|
||||
"strictVideoFrames": 0,
|
||||
"videoCallbacks": 0,
|
||||
"videoBytes": 0,
|
||||
"receivedFps": 0,
|
||||
"requiredFps": null,
|
||||
"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": null,
|
||||
"secondaryPublisherStats": null,
|
||||
"subscriberStats": null
|
||||
}
|
||||
}
|
||||
+162
File diff suppressed because one or more lines are too long
@@ -0,0 +1,274 @@
|
||||
{
|
||||
"status": "pass",
|
||||
"startedAt": "2026-06-06T22:17:16.198Z",
|
||||
"endedAt": "2026-06-06T22:17:18.067Z",
|
||||
"platform": "darwin",
|
||||
"arch": "arm64",
|
||||
"config": {
|
||||
"url": "ws://127.0.0.1:8088/livekit",
|
||||
"serverApiUrl": "http://127.0.0.1:8088",
|
||||
"apiKey": "devkey",
|
||||
"room": "fluxer-webrtc-harness-84689-a15db5c1-00f9-4cc5-8b1a-e68759b5e380",
|
||||
"externalTokens": false,
|
||||
"publisherIdentity": "fluxer-native-publisher-84689",
|
||||
"secondaryPublisherIdentity": "fluxer-native-publisher-2-84689",
|
||||
"subscriberIdentity": "fluxer-native-subscriber-84689",
|
||||
"required": false,
|
||||
"strict": false,
|
||||
"timeoutMs": 30000,
|
||||
"connectTimeoutMs": 30000,
|
||||
"disconnectTimeoutMs": 10000,
|
||||
"probeTimeoutMs": 1500,
|
||||
"durationMs": 0,
|
||||
"width": 320,
|
||||
"height": 180,
|
||||
"expectedWidth": 320,
|
||||
"expectedHeight": 180,
|
||||
"fps": 15,
|
||||
"minFpsRatio": 0,
|
||||
"maxFrameGapMs": 0,
|
||||
"maxAudioFrameGapMs": 0,
|
||||
"maxAvDriftMs": 0,
|
||||
"maxPacketLoss": null,
|
||||
"requireStableResolution": false,
|
||||
"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": true,
|
||||
"secondaryPublisherScreenSimulcast": true,
|
||||
"adaptiveSend": true,
|
||||
"minVideoFps": 15,
|
||||
"minResolutionScale": 0.5,
|
||||
"maxAudioBufferMs": 750,
|
||||
"secondaryPublisherMicrophone": false,
|
||||
"secondaryPublisherScreenAudio": false,
|
||||
"maxBitrateBps": 400000,
|
||||
"sampleRate": 48000,
|
||||
"channels": 1,
|
||||
"audioChunkMs": 20,
|
||||
"microphone": false,
|
||||
"screenAudio": false,
|
||||
"dataPacket": false,
|
||||
"subscriptionCycle": false,
|
||||
"validateServerPublishing": false,
|
||||
"camera": false,
|
||||
"cameraDeviceId": null,
|
||||
"expectedCameraCodec": null,
|
||||
"expectedHardwareEncoder": null,
|
||||
"reportPath": "/Users/hampus/Development/fluxer/fluxer_desktop/native-media-reports/2026-06-06T22-17-15Z-codex-livekit-proxy.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 320x180",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screenshare codec video/VP8",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video codec video/VP8",
|
||||
"pass": true
|
||||
}
|
||||
],
|
||||
"skippedReason": null,
|
||||
"error": null,
|
||||
"hardwareEncoder": {
|
||||
"available": true,
|
||||
"backend": "videotoolbox",
|
||||
"compiled": true,
|
||||
"runtime": true,
|
||||
"codecs": ["h264", "h265"],
|
||||
"zeroCopy": false,
|
||||
"nativeInputs": [],
|
||||
"detail": "VideoToolbox can create hardware-accelerated compression sessions for h264, h265; supported hardware-codec probe set: h264, h265"
|
||||
},
|
||||
"metrics": {
|
||||
"inboundAudioFrames": 0,
|
||||
"inboundVideoFrames": 13,
|
||||
"strictAudioFrames": 0,
|
||||
"strictVideoFrames": 0,
|
||||
"videoCallbacks": 13,
|
||||
"videoBytes": 1123200,
|
||||
"receivedFps": 0,
|
||||
"requiredFps": null,
|
||||
"maxVideoFrameGapMs": 0,
|
||||
"maxAudioFrameGapMs": 0,
|
||||
"maxVideoFrameGapOverallMs": 390,
|
||||
"maxAudioFrameGapOverallMs": 0,
|
||||
"avDriftMs": null,
|
||||
"maxObservedPacketLoss": 5,
|
||||
"maxObservedPacketLossDelta": 0,
|
||||
"videoResolutionCounts": {},
|
||||
"videoResolutionMismatchCount": 0,
|
||||
"droppedVideoFrameCallbacks": 0,
|
||||
"publisherVideoPump": {
|
||||
"input": "bgra",
|
||||
"pattern": "gradient",
|
||||
"targetFps": 15,
|
||||
"startedAtMs": 1780784237058,
|
||||
"stoppedAtMs": null,
|
||||
"framesPushed": 16,
|
||||
"framesRejected": 0,
|
||||
"errors": 0,
|
||||
"maxPushGapMs": 69,
|
||||
"lastPushAtMs": 1780784238060,
|
||||
"elapsedMs": 1018,
|
||||
"producedFps": 15.72
|
||||
},
|
||||
"secondaryPublisherVideoPump": null,
|
||||
"serverPublishing": {
|
||||
"fetchedAtMs": null,
|
||||
"error": null,
|
||||
"participants": []
|
||||
},
|
||||
"lastVideoMeta": {
|
||||
"participantSid": "PA_NicBnT5mxvvm",
|
||||
"trackSid": "TR_VSrvFY4wSg7eLt",
|
||||
"width": 320,
|
||||
"height": 180,
|
||||
"timestampUs": 335522961000
|
||||
},
|
||||
"publisherStats": {
|
||||
"rttMs": 1,
|
||||
"outbound": [
|
||||
{
|
||||
"trackSid": "TR_VSrvFY4wSg7eLt",
|
||||
"source": "screenshare",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 0,
|
||||
"packetsLost": 0,
|
||||
"fps": 15,
|
||||
"width": 320,
|
||||
"height": 180,
|
||||
"sourceWidth": 320,
|
||||
"sourceHeight": 180,
|
||||
"targetBitrateKbps": 400,
|
||||
"configuredFps": 15,
|
||||
"targetFps": 15,
|
||||
"effectiveFps": 14.6,
|
||||
"framesProduced": 14,
|
||||
"framesAccepted": 14,
|
||||
"framesDropped": 0,
|
||||
"framesCoalesced": 0,
|
||||
"framesCaptured": 14,
|
||||
"captureFailures": 0,
|
||||
"maxQueueAgeMs": 26,
|
||||
"maxPushLatencyMs": 26,
|
||||
"adaptiveSendTier": "full",
|
||||
"adaptiveSendReason": "stable",
|
||||
"codec": "video/VP8"
|
||||
}
|
||||
],
|
||||
"inbound": [],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 0,
|
||||
"outgoingVideoFramesProduced": 14,
|
||||
"outgoingVideoFramesAccepted": 14,
|
||||
"outgoingVideoFramesDropped": 0,
|
||||
"outgoingVideoFramesCoalesced": 0,
|
||||
"outgoingVideoFramesCaptured": 14,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 14.56,
|
||||
"outgoingVideoTargetFps": 15,
|
||||
"outgoingVideoMaxQueueAgeMs": 26,
|
||||
"outgoingVideoMaxPushLatencyMs": 26,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 0,
|
||||
"adaptiveSendTier": "full",
|
||||
"adaptiveSendReason": "stable"
|
||||
}
|
||||
},
|
||||
"secondaryPublisherStats": null,
|
||||
"subscriberStats": {
|
||||
"rttMs": 2,
|
||||
"outbound": [],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_NicBnT5mxvvm",
|
||||
"trackSid": "TR_VSrvFY4wSg7eLt",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 0,
|
||||
"packetsLost": 5,
|
||||
"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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+321
@@ -0,0 +1,321 @@
|
||||
{
|
||||
"status": "pass",
|
||||
"startedAt": "2026-06-06T22:17:32.639Z",
|
||||
"endedAt": "2026-06-06T22:17:34.704Z",
|
||||
"platform": "darwin",
|
||||
"arch": "arm64",
|
||||
"config": {
|
||||
"url": "ws://127.0.0.1:8088/livekit",
|
||||
"serverApiUrl": "http://127.0.0.1:8088",
|
||||
"apiKey": "devkey",
|
||||
"room": "fluxer-webrtc-harness-84848-43854e34-d3a9-4e33-bf45-b7ef3611083a",
|
||||
"externalTokens": false,
|
||||
"publisherIdentity": "fluxer-native-publisher-84848",
|
||||
"secondaryPublisherIdentity": "fluxer-native-publisher-2-84848",
|
||||
"subscriberIdentity": "fluxer-native-subscriber-84848",
|
||||
"required": false,
|
||||
"strict": false,
|
||||
"timeoutMs": 30000,
|
||||
"connectTimeoutMs": 30000,
|
||||
"disconnectTimeoutMs": 10000,
|
||||
"probeTimeoutMs": 1500,
|
||||
"durationMs": 0,
|
||||
"width": 320,
|
||||
"height": 180,
|
||||
"expectedWidth": 320,
|
||||
"expectedHeight": 180,
|
||||
"fps": 15,
|
||||
"minFpsRatio": 0,
|
||||
"maxFrameGapMs": 0,
|
||||
"maxAudioFrameGapMs": 0,
|
||||
"maxAvDriftMs": 0,
|
||||
"maxPacketLoss": null,
|
||||
"requireStableResolution": false,
|
||||
"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": true,
|
||||
"secondaryPublisherScreenSimulcast": true,
|
||||
"adaptiveSend": true,
|
||||
"minVideoFps": 15,
|
||||
"minResolutionScale": 0.5,
|
||||
"maxAudioBufferMs": 750,
|
||||
"secondaryPublisherMicrophone": true,
|
||||
"secondaryPublisherScreenAudio": false,
|
||||
"maxBitrateBps": 400000,
|
||||
"sampleRate": 48000,
|
||||
"channels": 1,
|
||||
"audioChunkMs": 20,
|
||||
"microphone": true,
|
||||
"screenAudio": false,
|
||||
"dataPacket": false,
|
||||
"subscriptionCycle": false,
|
||||
"validateServerPublishing": false,
|
||||
"camera": false,
|
||||
"cameraDeviceId": null,
|
||||
"expectedCameraCodec": null,
|
||||
"expectedHardwareEncoder": null,
|
||||
"reportPath": "/Users/hampus/Development/fluxer/fluxer_desktop/native-media-reports/2026-06-06T22-17-25Z-codex-host-smoke-proxy/livekit-harness.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 320x180",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber aggregate inbound audio frames >= 3",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio stats count >= 1",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher local microphone publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote microphone subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio frames >= 3",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound microphone stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screenshare codec video/VP8",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video codec video/VP8",
|
||||
"pass": true
|
||||
}
|
||||
],
|
||||
"skippedReason": null,
|
||||
"error": null,
|
||||
"hardwareEncoder": {
|
||||
"available": true,
|
||||
"backend": "videotoolbox",
|
||||
"compiled": true,
|
||||
"runtime": true,
|
||||
"codecs": ["h264", "h265"],
|
||||
"zeroCopy": false,
|
||||
"nativeInputs": [],
|
||||
"detail": "VideoToolbox can create hardware-accelerated compression sessions for h264, h265; supported hardware-codec probe set: h264, h265"
|
||||
},
|
||||
"metrics": {
|
||||
"inboundAudioFrames": 72,
|
||||
"inboundVideoFrames": 13,
|
||||
"strictAudioFrames": 0,
|
||||
"strictVideoFrames": 0,
|
||||
"videoCallbacks": 13,
|
||||
"videoBytes": 1123200,
|
||||
"receivedFps": 0,
|
||||
"requiredFps": null,
|
||||
"maxVideoFrameGapMs": 0,
|
||||
"maxAudioFrameGapMs": 0,
|
||||
"maxVideoFrameGapOverallMs": 184,
|
||||
"maxAudioFrameGapOverallMs": 102,
|
||||
"avDriftMs": 0,
|
||||
"maxObservedPacketLoss": 3,
|
||||
"maxObservedPacketLossDelta": 0,
|
||||
"videoResolutionCounts": {},
|
||||
"videoResolutionMismatchCount": 0,
|
||||
"droppedVideoFrameCallbacks": 0,
|
||||
"publisherVideoPump": {
|
||||
"input": "bgra",
|
||||
"pattern": "gradient",
|
||||
"targetFps": 15,
|
||||
"startedAtMs": 1780784253698,
|
||||
"stoppedAtMs": null,
|
||||
"framesPushed": 16,
|
||||
"framesRejected": 0,
|
||||
"errors": 0,
|
||||
"maxPushGapMs": 68,
|
||||
"lastPushAtMs": 1780784254699,
|
||||
"elapsedMs": 1014,
|
||||
"producedFps": 15.78
|
||||
},
|
||||
"secondaryPublisherVideoPump": null,
|
||||
"serverPublishing": {
|
||||
"fetchedAtMs": null,
|
||||
"error": null,
|
||||
"participants": []
|
||||
},
|
||||
"lastVideoMeta": {
|
||||
"participantSid": "PA_HwsqmPnPxvGD",
|
||||
"trackSid": "TR_VS8RxgcaoR5kbz",
|
||||
"width": 320,
|
||||
"height": 180,
|
||||
"timestampUs": 335539594000
|
||||
},
|
||||
"publisherStats": {
|
||||
"rttMs": 1,
|
||||
"outbound": [
|
||||
{
|
||||
"trackSid": "TR_VS8RxgcaoR5kbz",
|
||||
"source": "screenshare",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 0,
|
||||
"packetsLost": 0,
|
||||
"fps": 16,
|
||||
"width": 320,
|
||||
"height": 180,
|
||||
"sourceWidth": 320,
|
||||
"sourceHeight": 180,
|
||||
"targetBitrateKbps": 400,
|
||||
"configuredFps": 15,
|
||||
"targetFps": 15,
|
||||
"effectiveFps": 14.6,
|
||||
"framesProduced": 6,
|
||||
"framesAccepted": 6,
|
||||
"framesDropped": 0,
|
||||
"framesCoalesced": 0,
|
||||
"framesCaptured": 6,
|
||||
"captureFailures": 0,
|
||||
"maxQueueAgeMs": 8,
|
||||
"maxPushLatencyMs": 8,
|
||||
"adaptiveSendTier": "full",
|
||||
"adaptiveSendReason": "stable",
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_AMBPL59S6qUeEf",
|
||||
"source": "microphone",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 0,
|
||||
"packetsLost": 0,
|
||||
"audioLevel": 0.305,
|
||||
"codec": "audio/opus"
|
||||
}
|
||||
],
|
||||
"inbound": [],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 0,
|
||||
"outgoingVideoFramesProduced": 6,
|
||||
"outgoingVideoFramesAccepted": 6,
|
||||
"outgoingVideoFramesDropped": 0,
|
||||
"outgoingVideoFramesCoalesced": 0,
|
||||
"outgoingVideoFramesCaptured": 6,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 14.62,
|
||||
"outgoingVideoTargetFps": 15,
|
||||
"outgoingVideoMaxQueueAgeMs": 8,
|
||||
"outgoingVideoMaxPushLatencyMs": 8,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 23,
|
||||
"adaptiveSendTier": "full",
|
||||
"adaptiveSendReason": "stable"
|
||||
}
|
||||
},
|
||||
"secondaryPublisherStats": null,
|
||||
"subscriberStats": {
|
||||
"rttMs": 1,
|
||||
"outbound": [],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_HwsqmPnPxvGD",
|
||||
"trackSid": "TR_AMBPL59S6qUeEf",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 0,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 1,
|
||||
"audioLevel": 0.315,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_HwsqmPnPxvGD",
|
||||
"trackSid": "TR_VS8RxgcaoR5kbz",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 0,
|
||||
"packetsLost": 3,
|
||||
"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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+227
File diff suppressed because one or more lines are too long
@@ -0,0 +1,143 @@
|
||||
{
|
||||
"status": "fail",
|
||||
"mode": "smoke",
|
||||
"strict": false,
|
||||
"platform": "linux",
|
||||
"arch": "arm64",
|
||||
"hostname": "d4e5fefa7fc7",
|
||||
"startedAt": "2026-06-07T14:52:39.689Z",
|
||||
"endedAt": "2026-06-07T14:53:04.641Z",
|
||||
"reportDir": "/workspaces/fluxer/fluxer_desktop/native-media-reports/2026-06-07T14-52-39-687Z",
|
||||
"gates": [
|
||||
{
|
||||
"name": "mode-valid",
|
||||
"status": "pass",
|
||||
"mode": "smoke"
|
||||
},
|
||||
{
|
||||
"name": "documentation-current",
|
||||
"status": "pass",
|
||||
"missing": []
|
||||
},
|
||||
{
|
||||
"name": "strict-prerequisites",
|
||||
"status": "skip",
|
||||
"reason": "smoke mode"
|
||||
},
|
||||
{
|
||||
"name": "strict-command-plan",
|
||||
"status": "skip",
|
||||
"reason": "smoke mode"
|
||||
}
|
||||
],
|
||||
"plannedCommands": [
|
||||
{
|
||||
"name": "main-process-native-media-unit-tests",
|
||||
"command": "node --test src/main/NativeVoiceEngine.test.mjs src/main/NativeScreenCapture.test.mjs",
|
||||
"category": "shared",
|
||||
"cwd": "."
|
||||
},
|
||||
{
|
||||
"name": "desktop-typecheck",
|
||||
"command": "pnpm typecheck",
|
||||
"category": "shared",
|
||||
"cwd": "."
|
||||
},
|
||||
{
|
||||
"name": "webrtc-sender-build",
|
||||
"command": "pnpm --dir native/webrtc-sender build",
|
||||
"category": "native-sender",
|
||||
"cwd": "."
|
||||
},
|
||||
{
|
||||
"name": "webrtc-sender-tests",
|
||||
"command": "pnpm --dir native/webrtc-sender test",
|
||||
"category": "native-sender",
|
||||
"cwd": "."
|
||||
},
|
||||
{
|
||||
"name": "webrtc-sender-livekit-harness",
|
||||
"command": "pnpm --dir native/webrtc-sender test:livekit",
|
||||
"category": "livekit",
|
||||
"cwd": "."
|
||||
},
|
||||
{
|
||||
"name": "linux-screen-capture-build",
|
||||
"command": "pnpm --dir native/linux-screen-capture build",
|
||||
"category": "platform-native",
|
||||
"cwd": "."
|
||||
},
|
||||
{
|
||||
"name": "linux-screen-capture-tests",
|
||||
"command": "pnpm --dir native/linux-screen-capture test",
|
||||
"category": "platform-native",
|
||||
"cwd": "."
|
||||
},
|
||||
{
|
||||
"name": "linux-audio-capture-build",
|
||||
"command": "pnpm --dir native/linux-audio-capture build",
|
||||
"category": "platform-native",
|
||||
"cwd": "."
|
||||
},
|
||||
{
|
||||
"name": "linux-audio-capture-tests",
|
||||
"command": "pnpm --dir native/linux-audio-capture test",
|
||||
"category": "platform-native",
|
||||
"cwd": "."
|
||||
}
|
||||
],
|
||||
"commands": [
|
||||
{
|
||||
"name": "main-process-native-media-unit-tests",
|
||||
"command": "node --test src/main/NativeVoiceEngine.test.mjs src/main/NativeScreenCapture.test.mjs",
|
||||
"category": "shared",
|
||||
"status": "pass",
|
||||
"code": 0,
|
||||
"signal": null,
|
||||
"startedAt": "2026-06-07T14:52:39.690Z",
|
||||
"endedAt": "2026-06-07T14:52:39.792Z",
|
||||
"durationMs": 102,
|
||||
"stdoutTail": "▶ NativeScreenCapture source identity and capability reporting\n ✔ normalizes display and window sources without changing source ids (1.614801ms)\n ✔ starts display and window captures with exact source id and kind and reports diagnostics (1.041547ms)\n ✔ fails fast when native frame sink is required but unavailable (0.500503ms)\n ✔ passes caller-provided capture id and native sink handle to the platform wrapper (0.467711ms)\n ✔ reports macOS and Linux display/window capture capabilities from platform backends (0.625753ms)\n✔ NativeScreenCapture source identity and capability reporting (4.771278ms)\n▶ NativeVoiceEngine connection lifecycle\n ✔ does not forward native events after disconnecting a pending connect (3.117018ms)\n ✔ disconnects stale native connect completion after a replacement connect starts (1.775302ms)\n✔ NativeVoiceEngine connection lifecycle (5.440365ms)\n▶ NativeVoiceEngine screen frame routing\n ✔ publishes screen share with source pacing and exposes a native frame sink handle (0.897838ms)\n ✔ keeps screen-share audio published when screen video is unpublished (0.634254ms)\n ✔ replaces screen captures without releasing screen-share audio or duplicating priority (0.502586ms)\n ✔ forwards watch and unwatch operations with source, enablement, and quality intact (0.563378ms)\n ✔ reports VideoToolbox hardware capability from the native addon (0.49767ms)\n ✔ reports native voice engine capabilities from the native addon (0.56267ms)\n ✔ maps native addon microphone not-connected errors to the typed operation code (0.639129ms)\n✔ NativeVoiceEngine screen frame routing (4.546943ms)\nℹ tests 14\nℹ suites 3\nℹ pass 14\nℹ fail 0\nℹ cancelled 0\nℹ skipped 0\nℹ todo 0\nℹ duration_ms 81.841144\n",
|
||||
"stderrTail": ""
|
||||
},
|
||||
{
|
||||
"name": "desktop-typecheck",
|
||||
"command": "pnpm typecheck",
|
||||
"category": "shared",
|
||||
"status": "pass",
|
||||
"code": 0,
|
||||
"signal": null,
|
||||
"startedAt": "2026-06-07T14:52:39.792Z",
|
||||
"endedAt": "2026-06-07T14:52:40.133Z",
|
||||
"durationMs": 341,
|
||||
"stdoutTail": "\n> fluxer_desktop@0.0.0 typecheck /workspaces/fluxer/fluxer_desktop\n> tsgo --noEmit\n\n",
|
||||
"stderrTail": ""
|
||||
},
|
||||
{
|
||||
"name": "webrtc-sender-build",
|
||||
"command": "pnpm --dir native/webrtc-sender build",
|
||||
"category": "native-sender",
|
||||
"status": "pass",
|
||||
"code": 0,
|
||||
"signal": null,
|
||||
"startedAt": "2026-06-07T14:52:40.133Z",
|
||||
"endedAt": "2026-06-07T14:52:57.557Z",
|
||||
"durationMs": 17424,
|
||||
"stdoutTail": "\n> @fluxer/webrtc-sender@0.0.0 build /workspaces/fluxer/fluxer_desktop/native/webrtc-sender\n> cargo run --locked --quiet --manifest-path ../../../tools/ci/Cargo.toml -- build-desktop-native-addon\n\n[buildRustNodeAddon] cwd=/workspaces/fluxer/fluxer_desktop/native/webrtc-sender\n+ /home/vscode/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/bin/cargo build --release --target aarch64-unknown-linux-gnu --manifest-path Cargo.toml --features camera-native\n",
|
||||
"stderrTail": " Compiling crossbeam-utils v0.8.21\n Compiling fluxer_screen_frame_bus v0.0.0 (/workspaces/fluxer/fluxer_desktop/native/screen-frame-bus)\n Compiling fluxer_voice_core v0.1.0 (/workspaces/fluxer/fluxer_voice_core)\nwarning: unused import: `enum_dispatch`\n --> vendor/libwebrtc/src/audio_source.rs:15:13\n |\n15 | use crate::{enum_dispatch, imp::audio_source as imp_as};\n | ^^^^^^^^^^^^^\n |\n = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default\n\nwarning: unnecessary `unsafe` block\n --> vendor/libwebrtc/src/native/apm.rs:32:25\n |\n32 | sys_handle: unsafe {\n | ^^^^^^ unnecessary `unsafe` block\n |\n = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default\n\nwarning: variable does not need to be mutable\n --> vendor/libwebrtc/src/native/desktop_capturer.rs:66:13\n |\n66 | let mut sys_handle = sys_dc::ffi::DesktopCapturerOptions {\n | ----^^^^^^^^^^\n | |\n | help: remove this `mut`\n |\n = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default\n\nwarning: hiding a lifetime that's elided elsewhere is confusing\n --> vendor/libwebrtc/src/native/audio_mixer.rs:30:34\n |\n30 | fn get_audio_frame_with_info(&self, target_sample_rate: u32) -> Option<AudioFrame>;\n | ^^^^^ the lifetime is elided here ^^^^^^^^^^ the same lifetime is hidden here\n |\n = help: the same lifetime is referred to in inconsistent ways, making the signature confusing\n = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default\nhelp: use `'_` for type paths\n |\n30 | fn get_audio_frame_with_info(&self, target_sample_rate: u32) -> Option<AudioFrame<'_>>;\n | ++++\n\nwarning: `libwebrtc` (lib) generated 4 warnings (run `cargo fix --lib -p libwebrtc` to apply 3 suggestions)\n Compiling crossbeam-queue v0.3.12\n Compiling fluxer_webrtc_sender v0.0.0 (/workspaces/fluxer/fluxer_desktop/native/webrtc-sender)\n Finished `release` profile [optimized] target(s) in 10.39s\n"
|
||||
},
|
||||
{
|
||||
"name": "webrtc-sender-tests",
|
||||
"command": "pnpm --dir native/webrtc-sender test",
|
||||
"category": "native-sender",
|
||||
"status": "fail",
|
||||
"code": 1,
|
||||
"signal": null,
|
||||
"startedAt": "2026-06-07T14:52:57.557Z",
|
||||
"endedAt": "2026-06-07T14:53:04.641Z",
|
||||
"durationMs": 7084,
|
||||
"stdoutTail": "\n> @fluxer/webrtc-sender@0.0.0 test /workspaces/fluxer/fluxer_desktop/native/webrtc-sender\n> cargo run --locked --quiet --manifest-path ../../../tools/ci/Cargo.toml -- test-webrtc-sender-rust && node --test index.test.mjs scripts/livekit-harness.test.mjs\n\n+ /home/vscode/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/bin/cargo test --features \"publisher,camera-native\"\n ELIFECYCLE Test failed. See above for more details.\n WARN Local package.json exists, but node_modules missing, did you mean to install?\n",
|
||||
"stderrTail": " Compiling zerocopy-derive v0.8.50\n Compiling serde v1.0.228\n Compiling ring v0.17.14\n Compiling serde_urlencoded v0.7.1\n Compiling fluxer_screen_frame_bus v0.0.0 (/workspaces/fluxer/fluxer_desktop/native/screen-frame-bus)\n Compiling rustls v0.23.40\n Compiling pbjson v0.6.0\n Compiling os_info v3.15.0\n Compiling fluxer_voice_core v0.1.0 (/workspaces/fluxer/fluxer_voice_core)\n Compiling tinytemplate v1.2.1\n Compiling pbjson-types v0.6.0\n Compiling zerocopy v0.8.50\n Compiling rustls-webpki v0.103.13\n Compiling livekit-protocol v0.7.8\n Compiling ppv-lite86 v0.2.21\n Compiling half v2.7.1\n Compiling rand_chacha v0.9.0\n Compiling rand_chacha v0.3.1\n Compiling ciborium-ll v0.2.2\n Compiling tokio-rustls v0.26.4\n Compiling rand v0.8.6\n Compiling rand v0.9.4\nerror[E0786]: found invalid metadata files for crate `rustls`\n --> /home/vscode/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-rustls-0.26.4/src/lib.rs:49:9\n |\n49 | pub use rustls;\n | ^^^^^^\n |\n = note: failed to open rmeta metadata: '/workspaces/fluxer/fluxer_desktop/native/webrtc-sender/target/debug/deps/librustls-f66081aae860cdad.rmeta'\n\nFor more information about this error, try `rustc --explain E0786`.\nerror: could not compile `tokio-rustls` (lib) due to 1 previous error\nwarning: build failed, waiting for other jobs to finish...\nCommand failed with exit code 101: /home/vscode/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/bin/cargo test --features \"publisher,camera-native\"\n"
|
||||
}
|
||||
]
|
||||
}
|
||||
+765
@@ -0,0 +1,765 @@
|
||||
{
|
||||
"status": "fail",
|
||||
"startedAt": "2026-06-09T04:40:52.879Z",
|
||||
"endedAt": "2026-06-09T04:41:02.390Z",
|
||||
"platform": "darwin",
|
||||
"arch": "arm64",
|
||||
"config": {
|
||||
"url": "ws://localhost:7880",
|
||||
"serverApiUrl": "http://localhost:7880",
|
||||
"apiKey": "devkey",
|
||||
"room": "fluxer-webrtc-harness-76954-91cb528a-6d21-4940-ad58-aa5c5e746211",
|
||||
"externalTokens": false,
|
||||
"publisherIdentity": "fluxer-native-publisher-76954",
|
||||
"secondaryPublisherIdentity": "fluxer-native-publisher-2-76954",
|
||||
"subscriberIdentity": "fluxer-native-subscriber-76954",
|
||||
"required": true,
|
||||
"strict": true,
|
||||
"timeoutMs": 30000,
|
||||
"connectTimeoutMs": 30000,
|
||||
"disconnectTimeoutMs": 10000,
|
||||
"probeTimeoutMs": 1500,
|
||||
"durationMs": 5000,
|
||||
"width": 320,
|
||||
"height": 180,
|
||||
"expectedWidth": 320,
|
||||
"expectedHeight": 180,
|
||||
"fps": 15,
|
||||
"minFpsRatio": 0.95,
|
||||
"maxFrameGapMs": 250,
|
||||
"maxAudioFrameGapMs": 250,
|
||||
"maxAvDriftMs": 80,
|
||||
"maxPacketLoss": null,
|
||||
"requireStableResolution": true,
|
||||
"videoPattern": "gradient",
|
||||
"videoInput": "bgra",
|
||||
"subscriberVideoQuality": null,
|
||||
"screenCodecs": ["vp8"],
|
||||
"expectedScreenCodecs": ["vp8"],
|
||||
"codec": "vp8",
|
||||
"expectedScreenCodec": "video/VP8",
|
||||
"secondaryPublisher": true,
|
||||
"secondaryPublisherCodec": "vp8",
|
||||
"secondaryPublisherCodecExplicit": true,
|
||||
"expectedSecondaryPublisherCodec": "video/VP8",
|
||||
"expectedSecondaryPublisherCodecExplicit": true,
|
||||
"screenSimulcast": true,
|
||||
"secondaryPublisherScreenSimulcast": true,
|
||||
"adaptiveSend": true,
|
||||
"minVideoFps": 15,
|
||||
"minResolutionScale": 0.5,
|
||||
"maxAudioBufferMs": 750,
|
||||
"secondaryPublisherMicrophone": true,
|
||||
"secondaryPublisherScreenAudio": true,
|
||||
"maxBitrateBps": 400000,
|
||||
"sampleRate": 48000,
|
||||
"channels": 1,
|
||||
"audioChunkMs": 20,
|
||||
"microphone": true,
|
||||
"screenAudio": true,
|
||||
"dataPacket": true,
|
||||
"subscriptionCycle": true,
|
||||
"validateServerPublishing": true,
|
||||
"camera": true,
|
||||
"cameraDeviceId": null,
|
||||
"expectedCameraCodec": null,
|
||||
"expectedHardwareEncoder": null,
|
||||
"reportPath": "/Users/hampus/Development/fluxer/fluxer_desktop/native-media-reports/2026-06-09T-codex-macos-livekit-strict5-rerun.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 >= 9",
|
||||
"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 >= 3",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber video resolution 320x180",
|
||||
"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": "publisher local camera publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote camera subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound camera 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 publisher camera 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": "received FPS 10.01 below 14.25",
|
||||
"hardwareEncoder": {
|
||||
"available": true,
|
||||
"backend": "videotoolbox",
|
||||
"compiled": true,
|
||||
"runtime": true,
|
||||
"codecs": ["h264", "h265"],
|
||||
"zeroCopy": false,
|
||||
"nativeInputs": [],
|
||||
"detail": "VideoToolbox can create hardware-accelerated compression sessions for h264, h265; supported hardware-codec probe set: h264, h265"
|
||||
},
|
||||
"metrics": {
|
||||
"inboundAudioFrames": 3416,
|
||||
"inboundVideoFrames": 319,
|
||||
"strictAudioFrames": 50,
|
||||
"strictVideoFrames": 50,
|
||||
"videoCallbacks": 319,
|
||||
"videoBytes": 55728000,
|
||||
"receivedFps": 10.01,
|
||||
"requiredFps": 14.25,
|
||||
"maxVideoFrameGapMs": 104,
|
||||
"maxAudioFrameGapMs": 102,
|
||||
"maxVideoFrameGapOverallMs": 83,
|
||||
"maxAudioFrameGapOverallMs": 102,
|
||||
"avDriftMs": 36,
|
||||
"maxObservedPacketLoss": 76,
|
||||
"maxObservedPacketLossDelta": 43,
|
||||
"videoResolutionCounts": {
|
||||
"320x180": 50
|
||||
},
|
||||
"videoResolutionMismatchCount": 0,
|
||||
"droppedVideoFrameCallbacks": 0,
|
||||
"publisherVideoPump": {
|
||||
"input": "bgra",
|
||||
"pattern": "gradient",
|
||||
"targetFps": 15,
|
||||
"startedAtMs": 1780980053827,
|
||||
"stoppedAtMs": null,
|
||||
"framesPushed": 0,
|
||||
"framesRejected": 0,
|
||||
"errors": 0,
|
||||
"maxPushGapMs": 0,
|
||||
"lastPushAtMs": null,
|
||||
"elapsedMs": 8570,
|
||||
"producedFps": 0
|
||||
},
|
||||
"secondaryPublisherVideoPump": {
|
||||
"input": "bgra",
|
||||
"pattern": "gradient",
|
||||
"targetFps": 15,
|
||||
"startedAtMs": 1780980053827,
|
||||
"stoppedAtMs": null,
|
||||
"framesPushed": 0,
|
||||
"framesRejected": 0,
|
||||
"errors": 0,
|
||||
"maxPushGapMs": 0,
|
||||
"lastPushAtMs": null,
|
||||
"elapsedMs": 8570,
|
||||
"producedFps": 0
|
||||
},
|
||||
"serverPublishing": {
|
||||
"fetchedAtMs": 1780980057383,
|
||||
"error": null,
|
||||
"participants": [
|
||||
{
|
||||
"identity": "fluxer-native-publisher-2-76954",
|
||||
"trackCount": 3,
|
||||
"tracks": [
|
||||
{
|
||||
"sid": "TR_VSwHXmU7ctxa87",
|
||||
"name": "screen",
|
||||
"kind": "video",
|
||||
"source": "screen_share",
|
||||
"mimeType": "video/VP8",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_AMnWff3NPczSoR",
|
||||
"name": "mic",
|
||||
"kind": "audio",
|
||||
"source": "microphone",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_AsTFRWHNvJ7MgE",
|
||||
"name": "screen-audio",
|
||||
"kind": "audio",
|
||||
"source": "screen_share_audio",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"identity": "fluxer-native-publisher-76954",
|
||||
"trackCount": 4,
|
||||
"tracks": [
|
||||
{
|
||||
"sid": "TR_VSp9aehQCmDiq4",
|
||||
"name": "screen",
|
||||
"kind": "video",
|
||||
"source": "screen_share",
|
||||
"mimeType": "video/VP8",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_AM8ZuGaDACq9FB",
|
||||
"name": "mic",
|
||||
"kind": "audio",
|
||||
"source": "microphone",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_AsD2wGcUaXveFj",
|
||||
"name": "screen-audio",
|
||||
"kind": "audio",
|
||||
"source": "screen_share_audio",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_VC7GWwmaJQZJio",
|
||||
"name": "camera",
|
||||
"kind": "video",
|
||||
"source": "camera",
|
||||
"mimeType": "video/VP8",
|
||||
"muted": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"identity": "fluxer-native-subscriber-76954",
|
||||
"trackCount": 0,
|
||||
"tracks": []
|
||||
}
|
||||
]
|
||||
},
|
||||
"lastVideoMeta": {
|
||||
"participantSid": "PA_szoL7dTduPBR",
|
||||
"trackSid": "TR_VC7GWwmaJQZJio",
|
||||
"trackName": "camera",
|
||||
"source": "camera",
|
||||
"width": 480,
|
||||
"height": 360,
|
||||
"timestampUs": 526246627000,
|
||||
"identity": "fluxer-native-publisher-76954",
|
||||
"kind": "video"
|
||||
},
|
||||
"lastStrictVideoMeta": {
|
||||
"atMs": 1780980062302,
|
||||
"identity": "fluxer-native-publisher-76954",
|
||||
"kind": "video",
|
||||
"source": "screen_share",
|
||||
"trackName": "screen",
|
||||
"trackSid": "TR_VSp9aehQCmDiq4",
|
||||
"width": 320,
|
||||
"height": 180
|
||||
},
|
||||
"publisherStats": {
|
||||
"rttMs": 1,
|
||||
"outbound": [
|
||||
{
|
||||
"trackSid": "TR_VC7GWwmaJQZJio",
|
||||
"source": "camera",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 158.8,
|
||||
"packetsLost": 0,
|
||||
"fps": 25,
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_VC7GWwmaJQZJio",
|
||||
"source": "camera",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 112.8,
|
||||
"packetsLost": 0,
|
||||
"fps": 20,
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_AsD2wGcUaXveFj",
|
||||
"source": "screen_share_audio",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 260.8,
|
||||
"packetsLost": 0,
|
||||
"audioLevel": 0.305,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_AM8ZuGaDACq9FB",
|
||||
"source": "microphone",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 98.8,
|
||||
"packetsLost": 0,
|
||||
"audioLevel": 0.305,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_VSp9aehQCmDiq4",
|
||||
"source": "screen_share",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 7.2,
|
||||
"packetsLost": 0,
|
||||
"fps": 9,
|
||||
"width": 320,
|
||||
"height": 180,
|
||||
"sourceWidth": 320,
|
||||
"sourceHeight": 180,
|
||||
"targetBitrateKbps": 400,
|
||||
"configuredFps": 15,
|
||||
"targetFps": 15,
|
||||
"effectiveFps": 0,
|
||||
"framesProduced": 0,
|
||||
"framesAccepted": 0,
|
||||
"framesDropped": 0,
|
||||
"framesCoalesced": 0,
|
||||
"framesCaptured": 0,
|
||||
"captureFailures": 0,
|
||||
"maxQueueAgeMs": 0,
|
||||
"maxPushLatencyMs": 0,
|
||||
"adaptiveSendTier": "full",
|
||||
"adaptiveSendReason": "stable",
|
||||
"codec": "video/VP8"
|
||||
}
|
||||
],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_RnrcQgHxNGSb",
|
||||
"trackSid": "TR_AMnWff3NPczSoR",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 94.8,
|
||||
"packetsLost": 32,
|
||||
"jitterMs": 0,
|
||||
"audioLevel": 0.307,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_RnrcQgHxNGSb",
|
||||
"trackSid": "TR_AsTFRWHNvJ7MgE",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 236,
|
||||
"packetsLost": 28,
|
||||
"jitterMs": 0,
|
||||
"audioLevel": 0.336,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_RnrcQgHxNGSb",
|
||||
"trackSid": "TR_VSwHXmU7ctxa87",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 7.1,
|
||||
"packetsLost": 5,
|
||||
"jitterMs": 1,
|
||||
"codec": "video/VP8"
|
||||
}
|
||||
],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 0,
|
||||
"outgoingVideoQueueCapacity": 8,
|
||||
"outgoingVideoMaxQueueDepth": 0,
|
||||
"outgoingVideoFramesProduced": 0,
|
||||
"outgoingVideoFramesAccepted": 0,
|
||||
"outgoingVideoFramesDropped": 0,
|
||||
"outgoingVideoFramesCoalesced": 0,
|
||||
"outgoingVideoFramesCaptured": 0,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 0,
|
||||
"outgoingVideoTargetFps": 15,
|
||||
"outgoingVideoPacingTargetFps": 15,
|
||||
"outgoingVideoMaxQueueAgeMs": 0,
|
||||
"outgoingVideoMaxPushLatencyMs": 0,
|
||||
"outgoingVideoPacingMode": "source",
|
||||
"outgoingVideoBusActive": false,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 55,
|
||||
"adaptiveSendTier": "full",
|
||||
"adaptiveSendReason": "stable"
|
||||
}
|
||||
},
|
||||
"secondaryPublisherStats": {
|
||||
"rttMs": 1,
|
||||
"outbound": [
|
||||
{
|
||||
"trackSid": "TR_AMnWff3NPczSoR",
|
||||
"source": "microphone",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 99.2,
|
||||
"packetsLost": 0,
|
||||
"audioLevel": 0.305,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_VSwHXmU7ctxa87",
|
||||
"source": "screen_share",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 10.6,
|
||||
"packetsLost": 0,
|
||||
"fps": 9,
|
||||
"width": 320,
|
||||
"height": 180,
|
||||
"sourceWidth": 320,
|
||||
"sourceHeight": 180,
|
||||
"targetBitrateKbps": 400,
|
||||
"configuredFps": 15,
|
||||
"targetFps": 15,
|
||||
"effectiveFps": 0,
|
||||
"framesProduced": 0,
|
||||
"framesAccepted": 0,
|
||||
"framesDropped": 0,
|
||||
"framesCoalesced": 0,
|
||||
"framesCaptured": 0,
|
||||
"captureFailures": 0,
|
||||
"maxQueueAgeMs": 0,
|
||||
"maxPushLatencyMs": 0,
|
||||
"adaptiveSendTier": "full",
|
||||
"adaptiveSendReason": "stable",
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_AsTFRWHNvJ7MgE",
|
||||
"source": "screen_share_audio",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 261.1,
|
||||
"packetsLost": 0,
|
||||
"audioLevel": 0.305,
|
||||
"codec": "audio/opus"
|
||||
}
|
||||
],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_szoL7dTduPBR",
|
||||
"trackSid": "TR_AM8ZuGaDACq9FB",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 88.9,
|
||||
"packetsLost": 25,
|
||||
"jitterMs": 0,
|
||||
"audioLevel": 0.331,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_szoL7dTduPBR",
|
||||
"trackSid": "TR_AsD2wGcUaXveFj",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 250.9,
|
||||
"packetsLost": 30,
|
||||
"jitterMs": 0,
|
||||
"audioLevel": 0.307,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_szoL7dTduPBR",
|
||||
"trackSid": "TR_VC7GWwmaJQZJio",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 113.7,
|
||||
"packetsLost": 7,
|
||||
"jitterMs": 0,
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_szoL7dTduPBR",
|
||||
"trackSid": "TR_VSp9aehQCmDiq4",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 9.3,
|
||||
"packetsLost": 14,
|
||||
"jitterMs": 1,
|
||||
"codec": "video/VP8"
|
||||
}
|
||||
],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 0,
|
||||
"outgoingVideoQueueCapacity": 8,
|
||||
"outgoingVideoMaxQueueDepth": 0,
|
||||
"outgoingVideoFramesProduced": 0,
|
||||
"outgoingVideoFramesAccepted": 0,
|
||||
"outgoingVideoFramesDropped": 0,
|
||||
"outgoingVideoFramesCoalesced": 0,
|
||||
"outgoingVideoFramesCaptured": 0,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 0,
|
||||
"outgoingVideoTargetFps": 15,
|
||||
"outgoingVideoPacingTargetFps": 15,
|
||||
"outgoingVideoMaxQueueAgeMs": 0,
|
||||
"outgoingVideoMaxPushLatencyMs": 0,
|
||||
"outgoingVideoPacingMode": "source",
|
||||
"outgoingVideoBusActive": false,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 56,
|
||||
"adaptiveSendTier": "full",
|
||||
"adaptiveSendReason": "stable"
|
||||
}
|
||||
},
|
||||
"subscriberStats": {
|
||||
"rttMs": 1,
|
||||
"outbound": [],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_szoL7dTduPBR",
|
||||
"trackSid": "TR_AsD2wGcUaXveFj",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 260.5,
|
||||
"packetsLost": 5,
|
||||
"jitterMs": 0,
|
||||
"audioLevel": 0.318,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_szoL7dTduPBR",
|
||||
"trackSid": "TR_VC7GWwmaJQZJio",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 112.7,
|
||||
"packetsLost": 1,
|
||||
"jitterMs": 0,
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_szoL7dTduPBR",
|
||||
"trackSid": "TR_AM8ZuGaDACq9FB",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 98.7,
|
||||
"packetsLost": 1,
|
||||
"jitterMs": 0,
|
||||
"audioLevel": 0.313,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_szoL7dTduPBR",
|
||||
"trackSid": "TR_VSp9aehQCmDiq4",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 7.2,
|
||||
"packetsLost": 10,
|
||||
"jitterMs": 0,
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_RnrcQgHxNGSb",
|
||||
"trackSid": "TR_VSwHXmU7ctxa87",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 7.7,
|
||||
"packetsLost": 3,
|
||||
"jitterMs": 1,
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_RnrcQgHxNGSb",
|
||||
"trackSid": "TR_AMnWff3NPczSoR",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 98.7,
|
||||
"packetsLost": 3,
|
||||
"jitterMs": 0,
|
||||
"audioLevel": 0.323,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_RnrcQgHxNGSb",
|
||||
"trackSid": "TR_AsTFRWHNvJ7MgE",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 267.5,
|
||||
"packetsLost": 1,
|
||||
"jitterMs": 1,
|
||||
"audioLevel": 0.307,
|
||||
"codec": "audio/opus"
|
||||
}
|
||||
],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 0,
|
||||
"outgoingVideoQueueCapacity": 0,
|
||||
"outgoingVideoMaxQueueDepth": 0,
|
||||
"outgoingVideoFramesProduced": 0,
|
||||
"outgoingVideoFramesAccepted": 0,
|
||||
"outgoingVideoFramesDropped": 0,
|
||||
"outgoingVideoFramesCoalesced": 0,
|
||||
"outgoingVideoFramesCaptured": 0,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 0,
|
||||
"outgoingVideoTargetFps": 0,
|
||||
"outgoingVideoPacingTargetFps": 0,
|
||||
"outgoingVideoMaxQueueAgeMs": 0,
|
||||
"outgoingVideoMaxPushLatencyMs": 0,
|
||||
"outgoingVideoPacingMode": "idle",
|
||||
"outgoingVideoBusActive": false,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 0,
|
||||
"adaptiveSendTier": "idle",
|
||||
"adaptiveSendReason": "notPublishing"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+752
@@ -0,0 +1,752 @@
|
||||
{
|
||||
"status": "fail",
|
||||
"startedAt": "2026-06-09T04:11:22.147Z",
|
||||
"endedAt": "2026-06-09T04:11:46.733Z",
|
||||
"platform": "darwin",
|
||||
"arch": "arm64",
|
||||
"config": {
|
||||
"url": "ws://localhost:7880",
|
||||
"serverApiUrl": "http://localhost:7880",
|
||||
"apiKey": "devkey",
|
||||
"room": "fluxer-webrtc-harness-39834-83ba9452-cd15-4567-a196-47587b5a4a47",
|
||||
"externalTokens": false,
|
||||
"publisherIdentity": "fluxer-native-publisher-39834",
|
||||
"secondaryPublisherIdentity": "fluxer-native-publisher-2-39834",
|
||||
"subscriberIdentity": "fluxer-native-subscriber-39834",
|
||||
"required": true,
|
||||
"strict": true,
|
||||
"timeoutMs": 30000,
|
||||
"connectTimeoutMs": 30000,
|
||||
"disconnectTimeoutMs": 10000,
|
||||
"probeTimeoutMs": 1500,
|
||||
"durationMs": 5000,
|
||||
"width": 320,
|
||||
"height": 180,
|
||||
"expectedWidth": 320,
|
||||
"expectedHeight": 180,
|
||||
"fps": 15,
|
||||
"minFpsRatio": 0.95,
|
||||
"maxFrameGapMs": 250,
|
||||
"maxAudioFrameGapMs": 250,
|
||||
"maxAvDriftMs": 80,
|
||||
"maxPacketLoss": null,
|
||||
"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": true,
|
||||
"secondaryPublisherScreenSimulcast": true,
|
||||
"adaptiveSend": true,
|
||||
"minVideoFps": 15,
|
||||
"minResolutionScale": 0.5,
|
||||
"maxAudioBufferMs": 750,
|
||||
"secondaryPublisherMicrophone": true,
|
||||
"secondaryPublisherScreenAudio": true,
|
||||
"maxBitrateBps": 400000,
|
||||
"sampleRate": 48000,
|
||||
"channels": 1,
|
||||
"audioChunkMs": 20,
|
||||
"microphone": true,
|
||||
"screenAudio": true,
|
||||
"dataPacket": true,
|
||||
"subscriptionCycle": true,
|
||||
"validateServerPublishing": true,
|
||||
"camera": true,
|
||||
"cameraDeviceId": null,
|
||||
"expectedCameraCodec": null,
|
||||
"expectedHardwareEncoder": null,
|
||||
"reportPath": "/Users/hampus/Development/fluxer/fluxer_desktop/native-media-reports/2026-06-09T0407-codex-macos-livekit-strict5-localhost.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 >= 9",
|
||||
"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 >= 3",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber video resolution 320x180",
|
||||
"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": "publisher local camera publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote camera subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound camera 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 publisher camera 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": "A/V drift 97ms exceeds 80ms; observed 101 video frames outside 320x180",
|
||||
"hardwareEncoder": {
|
||||
"available": true,
|
||||
"backend": "videotoolbox",
|
||||
"compiled": true,
|
||||
"runtime": true,
|
||||
"codecs": ["h264", "h265"],
|
||||
"zeroCopy": false,
|
||||
"nativeInputs": [],
|
||||
"detail": "VideoToolbox can create hardware-accelerated compression sessions for h264, h265; supported hardware-codec probe set: h264, h265"
|
||||
},
|
||||
"metrics": {
|
||||
"inboundAudioFrames": 2952,
|
||||
"inboundVideoFrames": 268,
|
||||
"strictAudioFrames": 49,
|
||||
"strictVideoFrames": 201,
|
||||
"videoCallbacks": 268,
|
||||
"videoBytes": 46684800,
|
||||
"receivedFps": 40.18,
|
||||
"requiredFps": 14.25,
|
||||
"maxVideoFrameGapMs": 71,
|
||||
"maxAudioFrameGapMs": 101,
|
||||
"maxVideoFrameGapOverallMs": 242,
|
||||
"maxAudioFrameGapOverallMs": 102,
|
||||
"avDriftMs": 97,
|
||||
"maxObservedPacketLoss": 49,
|
||||
"maxObservedPacketLossDelta": 30,
|
||||
"videoResolutionCounts": {
|
||||
"480x360": 101,
|
||||
"320x180": 100
|
||||
},
|
||||
"videoResolutionMismatchCount": 101,
|
||||
"droppedVideoFrameCallbacks": 0,
|
||||
"publisherVideoPump": {
|
||||
"input": "bgra",
|
||||
"pattern": "gradient",
|
||||
"targetFps": 15,
|
||||
"startedAtMs": 1780978299271,
|
||||
"stoppedAtMs": null,
|
||||
"framesPushed": 0,
|
||||
"framesRejected": 0,
|
||||
"errors": 0,
|
||||
"maxPushGapMs": 0,
|
||||
"lastPushAtMs": null,
|
||||
"elapsedMs": 7471,
|
||||
"producedFps": 0
|
||||
},
|
||||
"secondaryPublisherVideoPump": {
|
||||
"input": "bgra",
|
||||
"pattern": "gradient",
|
||||
"targetFps": 15,
|
||||
"startedAtMs": 1780978299271,
|
||||
"stoppedAtMs": null,
|
||||
"framesPushed": 0,
|
||||
"framesRejected": 0,
|
||||
"errors": 0,
|
||||
"maxPushGapMs": 0,
|
||||
"lastPushAtMs": null,
|
||||
"elapsedMs": 7471,
|
||||
"producedFps": 0
|
||||
},
|
||||
"serverPublishing": {
|
||||
"fetchedAtMs": 1780978301481,
|
||||
"error": null,
|
||||
"participants": [
|
||||
{
|
||||
"identity": "fluxer-native-publisher-39834",
|
||||
"trackCount": 4,
|
||||
"tracks": [
|
||||
{
|
||||
"sid": "TR_VSgsehdpyfYRtH",
|
||||
"name": "screen",
|
||||
"kind": "video",
|
||||
"source": "screen_share",
|
||||
"mimeType": "video/VP8",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_AMRH3WDE9scsXz",
|
||||
"name": "mic",
|
||||
"kind": "audio",
|
||||
"source": "microphone",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_As4hoJPNkjh8Rv",
|
||||
"name": "screen-audio",
|
||||
"kind": "audio",
|
||||
"source": "screen_share_audio",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_VC9jnXZixHviLZ",
|
||||
"name": "camera",
|
||||
"kind": "video",
|
||||
"source": "camera",
|
||||
"mimeType": "video/VP8",
|
||||
"muted": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"identity": "fluxer-native-publisher-2-39834",
|
||||
"trackCount": 3,
|
||||
"tracks": [
|
||||
{
|
||||
"sid": "TR_VSQsd4UAwpwKy7",
|
||||
"name": "screen",
|
||||
"kind": "video",
|
||||
"source": "screen_share",
|
||||
"mimeType": "video/VP8",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_AsHmVYBSWSQdfU",
|
||||
"name": "screen-audio",
|
||||
"kind": "audio",
|
||||
"source": "screen_share_audio",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_AMq8at99MRi83a",
|
||||
"name": "mic",
|
||||
"kind": "audio",
|
||||
"source": "microphone",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"identity": "fluxer-native-subscriber-39834",
|
||||
"trackCount": 0,
|
||||
"tracks": []
|
||||
}
|
||||
]
|
||||
},
|
||||
"lastVideoMeta": {
|
||||
"participantSid": "PA_d6p3en8AQ9YP",
|
||||
"trackSid": "TR_VSgsehdpyfYRtH",
|
||||
"width": 320,
|
||||
"height": 180,
|
||||
"timestampUs": 524491017000
|
||||
},
|
||||
"publisherStats": {
|
||||
"rttMs": 1,
|
||||
"outbound": [
|
||||
{
|
||||
"trackSid": "TR_VSgsehdpyfYRtH",
|
||||
"source": "screen_share",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 6.9,
|
||||
"packetsLost": 0,
|
||||
"fps": 10,
|
||||
"width": 320,
|
||||
"height": 180,
|
||||
"sourceWidth": 320,
|
||||
"sourceHeight": 180,
|
||||
"targetBitrateKbps": 400,
|
||||
"configuredFps": 15,
|
||||
"targetFps": 15,
|
||||
"effectiveFps": 0,
|
||||
"framesProduced": 0,
|
||||
"framesAccepted": 0,
|
||||
"framesDropped": 0,
|
||||
"framesCoalesced": 0,
|
||||
"framesCaptured": 0,
|
||||
"captureFailures": 0,
|
||||
"maxQueueAgeMs": 0,
|
||||
"maxPushLatencyMs": 0,
|
||||
"adaptiveSendTier": "full",
|
||||
"adaptiveSendReason": "stable",
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_As4hoJPNkjh8Rv",
|
||||
"source": "screen_share_audio",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 261.2,
|
||||
"packetsLost": 0,
|
||||
"audioLevel": 0.305,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_AMRH3WDE9scsXz",
|
||||
"source": "microphone",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 98.9,
|
||||
"packetsLost": 0,
|
||||
"audioLevel": 0.305,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_VC9jnXZixHviLZ",
|
||||
"source": "camera",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 114.9,
|
||||
"packetsLost": 0,
|
||||
"fps": 25,
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_VC9jnXZixHviLZ",
|
||||
"source": "camera",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 92,
|
||||
"packetsLost": 0,
|
||||
"fps": 20,
|
||||
"codec": "video/VP8"
|
||||
}
|
||||
],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_ychdbeoTL2ht",
|
||||
"trackSid": "TR_AMq8at99MRi83a",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 98.8,
|
||||
"packetsLost": 1,
|
||||
"jitterMs": 0,
|
||||
"audioLevel": 0.306,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_ychdbeoTL2ht",
|
||||
"trackSid": "TR_AsHmVYBSWSQdfU",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 261.4,
|
||||
"packetsLost": 3,
|
||||
"jitterMs": 0,
|
||||
"audioLevel": 0.344,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_ychdbeoTL2ht",
|
||||
"trackSid": "TR_VSQsd4UAwpwKy7",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 13.1,
|
||||
"packetsLost": 3,
|
||||
"jitterMs": 6,
|
||||
"codec": "video/VP8"
|
||||
}
|
||||
],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 0,
|
||||
"outgoingVideoQueueCapacity": 8,
|
||||
"outgoingVideoMaxQueueDepth": 0,
|
||||
"outgoingVideoFramesProduced": 0,
|
||||
"outgoingVideoFramesAccepted": 0,
|
||||
"outgoingVideoFramesDropped": 0,
|
||||
"outgoingVideoFramesCoalesced": 0,
|
||||
"outgoingVideoFramesCaptured": 0,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 0,
|
||||
"outgoingVideoTargetFps": 15,
|
||||
"outgoingVideoPacingTargetFps": 15,
|
||||
"outgoingVideoMaxQueueAgeMs": 0,
|
||||
"outgoingVideoMaxPushLatencyMs": 0,
|
||||
"outgoingVideoPacingMode": "source",
|
||||
"outgoingVideoBusActive": false,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 29,
|
||||
"adaptiveSendTier": "full",
|
||||
"adaptiveSendReason": "stable"
|
||||
}
|
||||
},
|
||||
"secondaryPublisherStats": {
|
||||
"rttMs": null,
|
||||
"outbound": [
|
||||
{
|
||||
"trackSid": "TR_VSQsd4UAwpwKy7",
|
||||
"source": "screen_share",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 15.3,
|
||||
"packetsLost": 0,
|
||||
"fps": 10,
|
||||
"width": 320,
|
||||
"height": 180,
|
||||
"sourceWidth": 320,
|
||||
"sourceHeight": 180,
|
||||
"targetBitrateKbps": 400,
|
||||
"configuredFps": 15,
|
||||
"targetFps": 15,
|
||||
"effectiveFps": 0,
|
||||
"framesProduced": 0,
|
||||
"framesAccepted": 0,
|
||||
"framesDropped": 0,
|
||||
"framesCoalesced": 0,
|
||||
"framesCaptured": 0,
|
||||
"captureFailures": 0,
|
||||
"maxQueueAgeMs": 0,
|
||||
"maxPushLatencyMs": 0,
|
||||
"adaptiveSendTier": "full",
|
||||
"adaptiveSendReason": "stable",
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_AMq8at99MRi83a",
|
||||
"source": "microphone",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 98.8,
|
||||
"packetsLost": 0,
|
||||
"audioLevel": 0.305,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_AsHmVYBSWSQdfU",
|
||||
"source": "screen_share_audio",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 261.2,
|
||||
"packetsLost": 0,
|
||||
"audioLevel": 0.305,
|
||||
"codec": "audio/opus"
|
||||
}
|
||||
],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_d6p3en8AQ9YP",
|
||||
"trackSid": "TR_As4hoJPNkjh8Rv",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 254.9,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 0,
|
||||
"audioLevel": 0.306,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_d6p3en8AQ9YP",
|
||||
"trackSid": "TR_AMRH3WDE9scsXz",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 98.8,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 0,
|
||||
"audioLevel": 0.307,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_d6p3en8AQ9YP",
|
||||
"trackSid": "TR_VSgsehdpyfYRtH",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 7.3,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 2,
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_d6p3en8AQ9YP",
|
||||
"trackSid": "TR_VC9jnXZixHviLZ",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 96.7,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 0,
|
||||
"codec": "video/VP8"
|
||||
}
|
||||
],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 0,
|
||||
"outgoingVideoQueueCapacity": 8,
|
||||
"outgoingVideoMaxQueueDepth": 0,
|
||||
"outgoingVideoFramesProduced": 0,
|
||||
"outgoingVideoFramesAccepted": 0,
|
||||
"outgoingVideoFramesDropped": 0,
|
||||
"outgoingVideoFramesCoalesced": 0,
|
||||
"outgoingVideoFramesCaptured": 0,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 0,
|
||||
"outgoingVideoTargetFps": 15,
|
||||
"outgoingVideoPacingTargetFps": 15,
|
||||
"outgoingVideoMaxQueueAgeMs": 0,
|
||||
"outgoingVideoMaxPushLatencyMs": 0,
|
||||
"outgoingVideoPacingMode": "source",
|
||||
"outgoingVideoBusActive": false,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 29,
|
||||
"adaptiveSendTier": "full",
|
||||
"adaptiveSendReason": "stable"
|
||||
}
|
||||
},
|
||||
"subscriberStats": {
|
||||
"rttMs": 1,
|
||||
"outbound": [],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_d6p3en8AQ9YP",
|
||||
"trackSid": "TR_VSgsehdpyfYRtH",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 7.3,
|
||||
"packetsLost": 1,
|
||||
"jitterMs": 2,
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_d6p3en8AQ9YP",
|
||||
"trackSid": "TR_AMRH3WDE9scsXz",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 98.8,
|
||||
"packetsLost": 3,
|
||||
"jitterMs": 0,
|
||||
"audioLevel": 0.306,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_d6p3en8AQ9YP",
|
||||
"trackSid": "TR_VC9jnXZixHviLZ",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 96.6,
|
||||
"packetsLost": 1,
|
||||
"jitterMs": 0,
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_d6p3en8AQ9YP",
|
||||
"trackSid": "TR_As4hoJPNkjh8Rv",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 259.7,
|
||||
"packetsLost": 1,
|
||||
"jitterMs": 0,
|
||||
"audioLevel": 0.306,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_ychdbeoTL2ht",
|
||||
"trackSid": "TR_AsHmVYBSWSQdfU",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 242.6,
|
||||
"packetsLost": 22,
|
||||
"jitterMs": 0,
|
||||
"audioLevel": 0.307,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_ychdbeoTL2ht",
|
||||
"trackSid": "TR_VSQsd4UAwpwKy7",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 15.3,
|
||||
"packetsLost": 2,
|
||||
"jitterMs": 7,
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_ychdbeoTL2ht",
|
||||
"trackSid": "TR_AMq8at99MRi83a",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 96.8,
|
||||
"packetsLost": 19,
|
||||
"jitterMs": 0,
|
||||
"audioLevel": 0.322,
|
||||
"codec": "audio/opus"
|
||||
}
|
||||
],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 0,
|
||||
"outgoingVideoQueueCapacity": 0,
|
||||
"outgoingVideoMaxQueueDepth": 0,
|
||||
"outgoingVideoFramesProduced": 0,
|
||||
"outgoingVideoFramesAccepted": 0,
|
||||
"outgoingVideoFramesDropped": 0,
|
||||
"outgoingVideoFramesCoalesced": 0,
|
||||
"outgoingVideoFramesCaptured": 0,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 0,
|
||||
"outgoingVideoTargetFps": 0,
|
||||
"outgoingVideoPacingTargetFps": 0,
|
||||
"outgoingVideoMaxQueueAgeMs": 0,
|
||||
"outgoingVideoMaxPushLatencyMs": 0,
|
||||
"outgoingVideoPacingMode": "idle",
|
||||
"outgoingVideoBusActive": false,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 0,
|
||||
"adaptiveSendTier": "idle",
|
||||
"adaptiveSendReason": "notPublishing"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,309 @@
|
||||
{
|
||||
"status": "fail",
|
||||
"startedAt": "2026-06-09T04:10:37.354Z",
|
||||
"endedAt": "2026-06-09T04:11:07.359Z",
|
||||
"platform": "darwin",
|
||||
"arch": "arm64",
|
||||
"config": {
|
||||
"url": "ws://127.0.0.1:7880",
|
||||
"serverApiUrl": "http://127.0.0.1:7880",
|
||||
"apiKey": "devkey",
|
||||
"room": "fluxer-webrtc-harness-39654-62723187-aa62-4359-9c19-cbc0403532e3",
|
||||
"externalTokens": false,
|
||||
"publisherIdentity": "fluxer-native-publisher-39654",
|
||||
"secondaryPublisherIdentity": "fluxer-native-publisher-2-39654",
|
||||
"subscriberIdentity": "fluxer-native-subscriber-39654",
|
||||
"required": true,
|
||||
"strict": true,
|
||||
"timeoutMs": 30000,
|
||||
"connectTimeoutMs": 30000,
|
||||
"disconnectTimeoutMs": 10000,
|
||||
"probeTimeoutMs": 1500,
|
||||
"durationMs": 5000,
|
||||
"width": 320,
|
||||
"height": 180,
|
||||
"expectedWidth": 320,
|
||||
"expectedHeight": 180,
|
||||
"fps": 15,
|
||||
"minFpsRatio": 0.95,
|
||||
"maxFrameGapMs": 250,
|
||||
"maxAudioFrameGapMs": 250,
|
||||
"maxAvDriftMs": 80,
|
||||
"maxPacketLoss": null,
|
||||
"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": true,
|
||||
"secondaryPublisherScreenSimulcast": true,
|
||||
"adaptiveSend": true,
|
||||
"minVideoFps": 15,
|
||||
"minResolutionScale": 0.5,
|
||||
"maxAudioBufferMs": 750,
|
||||
"secondaryPublisherMicrophone": true,
|
||||
"secondaryPublisherScreenAudio": true,
|
||||
"maxBitrateBps": 400000,
|
||||
"sampleRate": 48000,
|
||||
"channels": 1,
|
||||
"audioChunkMs": 20,
|
||||
"microphone": true,
|
||||
"screenAudio": true,
|
||||
"dataPacket": true,
|
||||
"subscriptionCycle": true,
|
||||
"validateServerPublishing": true,
|
||||
"camera": true,
|
||||
"cameraDeviceId": null,
|
||||
"expectedCameraCodec": null,
|
||||
"expectedHardwareEncoder": null,
|
||||
"reportPath": "/Users/hampus/Development/fluxer/fluxer_desktop/native-media-reports/2026-06-09T0407-codex-macos-livekit-strict5.json",
|
||||
"verbose": false,
|
||||
"scenarioName": "codec-vp8-with-vp8",
|
||||
"apiSecret": "<redacted>",
|
||||
"e2eeKey": null,
|
||||
"publisherToken": null,
|
||||
"secondaryPublisherToken": null,
|
||||
"subscriberToken": null
|
||||
},
|
||||
"checks": [
|
||||
{
|
||||
"name": "publisher connected",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber connected",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "publisher local screenshare publication",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote screenshare subscription",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video frames >= 9",
|
||||
"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 >= 3",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber video resolution 320x180",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber aggregate inbound audio frames >= 12",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio stats count >= 4",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "publisher local microphone publication",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote microphone subscription",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio frames >= 12",
|
||||
"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 local camera publication",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote camera subscription",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound camera stats",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher connected",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher local screenshare publication",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote secondary screenshare subscription",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher outbound screenshare stats",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher outbound screenshare codec video/VP8",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound secondary codec video/VP8",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher local microphone publication",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote secondary microphone subscription",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher outbound microphone stats",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher local screen-share audio publication",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote secondary screen-share audio subscription",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher outbound screen-share audio stats",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber data packet received",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber secondary data packet received",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screenshare codec video/VP8",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video codec video/VP8",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "server publishing API participants listed",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "server sees publisher screenshare publication",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "server sees publisher microphone publication",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "server sees publisher screen-share audio publication",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "server sees publisher camera publication",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "server sees secondary publisher screenshare publication",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "server sees secondary publisher microphone publication",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "server sees secondary publisher screen-share audio publication",
|
||||
"pass": false
|
||||
}
|
||||
],
|
||||
"skippedReason": null,
|
||||
"error": "Error: connect timed out after 30000ms\n at file:///Users/hampus/Development/fluxer/fluxer_desktop/native/webrtc-sender/scripts/livekit-harness.mjs:1252:9\n at async runHarness (file:///Users/hampus/Development/fluxer/fluxer_desktop/native/webrtc-sender/scripts/livekit-harness.mjs:1679:3)\n at async main (file:///Users/hampus/Development/fluxer/fluxer_desktop/native/webrtc-sender/scripts/livekit-harness.mjs:1931:18)\n at async file:///Users/hampus/Development/fluxer/fluxer_desktop/native/webrtc-sender/scripts/livekit-harness.mjs:1964:19",
|
||||
"hardwareEncoder": {
|
||||
"available": true,
|
||||
"backend": "videotoolbox",
|
||||
"compiled": true,
|
||||
"runtime": true,
|
||||
"codecs": ["h264", "h265"],
|
||||
"zeroCopy": false,
|
||||
"nativeInputs": [],
|
||||
"detail": "VideoToolbox can create hardware-accelerated compression sessions for h264, h265; supported hardware-codec probe set: h264, h265"
|
||||
},
|
||||
"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": null,
|
||||
"secondaryPublisherStats": null,
|
||||
"subscriberStats": null
|
||||
}
|
||||
}
|
||||
+331
@@ -0,0 +1,331 @@
|
||||
{
|
||||
"status": "pass",
|
||||
"startedAt": "2026-06-09T04:09:48.418Z",
|
||||
"endedAt": "2026-06-09T04:09:50.279Z",
|
||||
"platform": "darwin",
|
||||
"arch": "arm64",
|
||||
"config": {
|
||||
"url": "ws://localhost:7880",
|
||||
"serverApiUrl": "http://localhost:7880",
|
||||
"apiKey": "devkey",
|
||||
"room": "fluxer-webrtc-harness-39291-5ee61a43-3009-4112-bca3-ae4b4667a371",
|
||||
"externalTokens": false,
|
||||
"publisherIdentity": "fluxer-native-publisher-39291",
|
||||
"secondaryPublisherIdentity": "fluxer-native-publisher-2-39291",
|
||||
"subscriberIdentity": "fluxer-native-subscriber-39291",
|
||||
"required": false,
|
||||
"strict": false,
|
||||
"timeoutMs": 30000,
|
||||
"connectTimeoutMs": 30000,
|
||||
"disconnectTimeoutMs": 10000,
|
||||
"probeTimeoutMs": 1500,
|
||||
"durationMs": 0,
|
||||
"width": 320,
|
||||
"height": 180,
|
||||
"expectedWidth": 320,
|
||||
"expectedHeight": 180,
|
||||
"fps": 15,
|
||||
"minFpsRatio": 0,
|
||||
"maxFrameGapMs": 0,
|
||||
"maxAudioFrameGapMs": 0,
|
||||
"maxAvDriftMs": 0,
|
||||
"maxPacketLoss": null,
|
||||
"requireStableResolution": false,
|
||||
"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": true,
|
||||
"secondaryPublisherScreenSimulcast": true,
|
||||
"adaptiveSend": true,
|
||||
"minVideoFps": 15,
|
||||
"minResolutionScale": 0.5,
|
||||
"maxAudioBufferMs": 750,
|
||||
"secondaryPublisherMicrophone": true,
|
||||
"secondaryPublisherScreenAudio": false,
|
||||
"maxBitrateBps": 400000,
|
||||
"sampleRate": 48000,
|
||||
"channels": 1,
|
||||
"audioChunkMs": 20,
|
||||
"microphone": true,
|
||||
"screenAudio": false,
|
||||
"dataPacket": false,
|
||||
"subscriptionCycle": false,
|
||||
"validateServerPublishing": false,
|
||||
"camera": false,
|
||||
"cameraDeviceId": null,
|
||||
"expectedCameraCodec": null,
|
||||
"expectedHardwareEncoder": null,
|
||||
"reportPath": "/Users/hampus/Development/fluxer/fluxer_desktop/native-media-reports/2026-06-09T0407-codex-macos-smoke/livekit-harness.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 320x180",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber aggregate inbound audio frames >= 3",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio stats count >= 1",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher local microphone publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote microphone subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio frames >= 3",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound microphone stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screenshare codec video/VP8",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video codec video/VP8",
|
||||
"pass": true
|
||||
}
|
||||
],
|
||||
"skippedReason": null,
|
||||
"error": null,
|
||||
"hardwareEncoder": {
|
||||
"available": true,
|
||||
"backend": "videotoolbox",
|
||||
"compiled": true,
|
||||
"runtime": true,
|
||||
"codecs": ["h264", "h265"],
|
||||
"zeroCopy": false,
|
||||
"nativeInputs": [],
|
||||
"detail": "VideoToolbox can create hardware-accelerated compression sessions for h264, h265; supported hardware-codec probe set: h264, h265"
|
||||
},
|
||||
"metrics": {
|
||||
"inboundAudioFrames": 72,
|
||||
"inboundVideoFrames": 5,
|
||||
"strictAudioFrames": 0,
|
||||
"strictVideoFrames": 0,
|
||||
"videoCallbacks": 5,
|
||||
"videoBytes": 432000,
|
||||
"receivedFps": 0,
|
||||
"requiredFps": null,
|
||||
"maxVideoFrameGapMs": 0,
|
||||
"maxAudioFrameGapMs": 0,
|
||||
"maxVideoFrameGapOverallMs": 132,
|
||||
"maxAudioFrameGapOverallMs": 101,
|
||||
"avDriftMs": 2,
|
||||
"maxObservedPacketLoss": 0,
|
||||
"maxObservedPacketLossDelta": 0,
|
||||
"videoResolutionCounts": {},
|
||||
"videoResolutionMismatchCount": 0,
|
||||
"droppedVideoFrameCallbacks": 0,
|
||||
"publisherVideoPump": {
|
||||
"input": "bgra",
|
||||
"pattern": "gradient",
|
||||
"targetFps": 15,
|
||||
"startedAtMs": 1780978189023,
|
||||
"stoppedAtMs": null,
|
||||
"framesPushed": 0,
|
||||
"framesRejected": 0,
|
||||
"errors": 0,
|
||||
"maxPushGapMs": 0,
|
||||
"lastPushAtMs": null,
|
||||
"elapsedMs": 1264,
|
||||
"producedFps": 0
|
||||
},
|
||||
"secondaryPublisherVideoPump": null,
|
||||
"serverPublishing": {
|
||||
"fetchedAtMs": null,
|
||||
"error": null,
|
||||
"participants": []
|
||||
},
|
||||
"lastVideoMeta": {
|
||||
"participantSid": "PA_tmqNx963FdVV",
|
||||
"trackSid": "TR_VS7wQpyDuhX3NX",
|
||||
"width": 320,
|
||||
"height": 180,
|
||||
"timestampUs": 524374518000
|
||||
},
|
||||
"publisherStats": {
|
||||
"rttMs": 1,
|
||||
"outbound": [
|
||||
{
|
||||
"trackSid": "TR_VS7wQpyDuhX3NX",
|
||||
"source": "screen_share",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 0,
|
||||
"packetsLost": 0,
|
||||
"fps": 10,
|
||||
"width": 320,
|
||||
"height": 180,
|
||||
"sourceWidth": 320,
|
||||
"sourceHeight": 180,
|
||||
"targetBitrateKbps": 400,
|
||||
"configuredFps": 15,
|
||||
"targetFps": 15,
|
||||
"effectiveFps": 0,
|
||||
"framesProduced": 0,
|
||||
"framesAccepted": 0,
|
||||
"framesDropped": 0,
|
||||
"framesCoalesced": 0,
|
||||
"framesCaptured": 0,
|
||||
"captureFailures": 0,
|
||||
"maxQueueAgeMs": 0,
|
||||
"maxPushLatencyMs": 0,
|
||||
"adaptiveSendTier": "full",
|
||||
"adaptiveSendReason": "stable",
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_AMq6BwJ6fu5yXx",
|
||||
"source": "microphone",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 0,
|
||||
"packetsLost": 0,
|
||||
"audioLevel": 0.305,
|
||||
"codec": "audio/opus"
|
||||
}
|
||||
],
|
||||
"inbound": [],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 0,
|
||||
"outgoingVideoQueueCapacity": 8,
|
||||
"outgoingVideoMaxQueueDepth": 0,
|
||||
"outgoingVideoFramesProduced": 0,
|
||||
"outgoingVideoFramesAccepted": 0,
|
||||
"outgoingVideoFramesDropped": 0,
|
||||
"outgoingVideoFramesCoalesced": 0,
|
||||
"outgoingVideoFramesCaptured": 0,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 0,
|
||||
"outgoingVideoTargetFps": 15,
|
||||
"outgoingVideoPacingTargetFps": 15,
|
||||
"outgoingVideoMaxQueueAgeMs": 0,
|
||||
"outgoingVideoMaxPushLatencyMs": 0,
|
||||
"outgoingVideoPacingMode": "source",
|
||||
"outgoingVideoBusActive": false,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 23,
|
||||
"adaptiveSendTier": "full",
|
||||
"adaptiveSendReason": "stable"
|
||||
}
|
||||
},
|
||||
"secondaryPublisherStats": null,
|
||||
"subscriberStats": {
|
||||
"rttMs": 2,
|
||||
"outbound": [],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_tmqNx963FdVV",
|
||||
"trackSid": "TR_AMq6BwJ6fu5yXx",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 0,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 0,
|
||||
"audioLevel": 0.307,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_tmqNx963FdVV",
|
||||
"trackSid": "TR_VS7wQpyDuhX3NX",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 0,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 0,
|
||||
"codec": "video/VP8"
|
||||
}
|
||||
],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 0,
|
||||
"outgoingVideoQueueCapacity": 0,
|
||||
"outgoingVideoMaxQueueDepth": 0,
|
||||
"outgoingVideoFramesProduced": 0,
|
||||
"outgoingVideoFramesAccepted": 0,
|
||||
"outgoingVideoFramesDropped": 0,
|
||||
"outgoingVideoFramesCoalesced": 0,
|
||||
"outgoingVideoFramesCaptured": 0,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 0,
|
||||
"outgoingVideoTargetFps": 0,
|
||||
"outgoingVideoPacingTargetFps": 0,
|
||||
"outgoingVideoMaxQueueAgeMs": 0,
|
||||
"outgoingVideoMaxPushLatencyMs": 0,
|
||||
"outgoingVideoPacingMode": "idle",
|
||||
"outgoingVideoBusActive": false,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 0,
|
||||
"adaptiveSendTier": "idle",
|
||||
"adaptiveSendReason": "notPublishing"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,334 @@
|
||||
{
|
||||
"status": "fail",
|
||||
"startedAt": "2026-06-09T04:15:05.489Z",
|
||||
"endedAt": "2026-06-09T04:15:36.366Z",
|
||||
"platform": "linux",
|
||||
"arch": "arm64",
|
||||
"config": {
|
||||
"url": "ws://10.211.55.2:7880",
|
||||
"serverApiUrl": "http://10.211.55.2:7880",
|
||||
"apiKey": "devkey",
|
||||
"room": "fluxer-webrtc-harness-283674-883784d5-5c9a-4466-84b5-dade644ebf82",
|
||||
"externalTokens": false,
|
||||
"publisherIdentity": "fluxer-native-publisher-283674",
|
||||
"secondaryPublisherIdentity": "fluxer-native-publisher-2-283674",
|
||||
"subscriberIdentity": "fluxer-native-subscriber-283674",
|
||||
"required": true,
|
||||
"strict": false,
|
||||
"timeoutMs": 30000,
|
||||
"connectTimeoutMs": 30000,
|
||||
"disconnectTimeoutMs": 10000,
|
||||
"probeTimeoutMs": 1500,
|
||||
"durationMs": 0,
|
||||
"width": 320,
|
||||
"height": 180,
|
||||
"expectedWidth": 320,
|
||||
"expectedHeight": 180,
|
||||
"fps": 15,
|
||||
"minFpsRatio": 0,
|
||||
"maxFrameGapMs": 0,
|
||||
"maxAudioFrameGapMs": 0,
|
||||
"maxAvDriftMs": 0,
|
||||
"maxPacketLoss": null,
|
||||
"requireStableResolution": false,
|
||||
"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": true,
|
||||
"secondaryPublisherScreenSimulcast": true,
|
||||
"adaptiveSend": true,
|
||||
"minVideoFps": 15,
|
||||
"minResolutionScale": 0.5,
|
||||
"maxAudioBufferMs": 750,
|
||||
"secondaryPublisherMicrophone": true,
|
||||
"secondaryPublisherScreenAudio": false,
|
||||
"maxBitrateBps": 400000,
|
||||
"sampleRate": 48000,
|
||||
"channels": 1,
|
||||
"audioChunkMs": 20,
|
||||
"microphone": true,
|
||||
"screenAudio": false,
|
||||
"dataPacket": false,
|
||||
"subscriptionCycle": false,
|
||||
"validateServerPublishing": false,
|
||||
"camera": false,
|
||||
"cameraDeviceId": null,
|
||||
"expectedCameraCodec": null,
|
||||
"expectedHardwareEncoder": null,
|
||||
"reportPath": "/media/psf/fluxer-dev/fluxer_desktop/native-media-reports/2026-06-09T0413-codex-fedora-livekit-smoke.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": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote screenshare subscription",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video frames >= 3",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber video frame callback",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screenshare stats",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video stats count >= 1",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber video resolution 320x180",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber aggregate inbound audio frames >= 3",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio stats count >= 1",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher local microphone publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote microphone subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio frames >= 3",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound microphone stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screenshare codec video/VP8",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video codec video/VP8",
|
||||
"pass": true
|
||||
}
|
||||
],
|
||||
"skippedReason": null,
|
||||
"error": "Error: timed out after 30000ms waiting for: publisher local screenshare publication, subscriber remote screenshare subscription, publisher outbound screenshare stats, publisher outbound screenshare codec video/VP8\n at waitForHarnessSuccess (file:///media/psf/fluxer-dev/fluxer_desktop/native/webrtc-sender/scripts/livekit-harness.mjs:1232:8)\n at async runHarness (file:///media/psf/fluxer-dev/fluxer_desktop/native/webrtc-sender/scripts/livekit-harness.mjs:1831:18)\n at async main (file:///media/psf/fluxer-dev/fluxer_desktop/native/webrtc-sender/scripts/livekit-harness.mjs:1931:18)\n at async file:///media/psf/fluxer-dev/fluxer_desktop/native/webrtc-sender/scripts/livekit-harness.mjs:1964:19",
|
||||
"hardwareEncoder": {
|
||||
"available": false,
|
||||
"backend": "none",
|
||||
"compiled": true,
|
||||
"runtime": false,
|
||||
"codecs": [],
|
||||
"zeroCopy": false,
|
||||
"nativeInputs": [],
|
||||
"reason": "runtime_prerequisite_missing",
|
||||
"detail": "missing libcuda.so.1, libnvidia-encode.so.1"
|
||||
},
|
||||
"metrics": {
|
||||
"inboundAudioFrames": 2994,
|
||||
"inboundVideoFrames": 300,
|
||||
"strictAudioFrames": 297,
|
||||
"strictVideoFrames": 300,
|
||||
"videoCallbacks": 300,
|
||||
"videoBytes": 25920000,
|
||||
"receivedFps": 10,
|
||||
"requiredFps": null,
|
||||
"maxVideoFrameGapMs": 120,
|
||||
"maxAudioFrameGapMs": 106,
|
||||
"maxVideoFrameGapOverallMs": 120,
|
||||
"maxAudioFrameGapOverallMs": 106,
|
||||
"avDriftMs": 4,
|
||||
"maxObservedPacketLoss": 0,
|
||||
"maxObservedPacketLossDelta": 0,
|
||||
"videoResolutionCounts": {
|
||||
"320x180": 300
|
||||
},
|
||||
"videoResolutionMismatchCount": 0,
|
||||
"droppedVideoFrameCallbacks": 0,
|
||||
"publisherVideoPump": {
|
||||
"input": "bgra",
|
||||
"pattern": "gradient",
|
||||
"targetFps": 15,
|
||||
"startedAtMs": 1780978506249,
|
||||
"stoppedAtMs": null,
|
||||
"framesPushed": 0,
|
||||
"framesRejected": 0,
|
||||
"errors": 0,
|
||||
"maxPushGapMs": 0,
|
||||
"lastPushAtMs": null,
|
||||
"elapsedMs": 30121,
|
||||
"producedFps": 0
|
||||
},
|
||||
"secondaryPublisherVideoPump": null,
|
||||
"serverPublishing": {
|
||||
"fetchedAtMs": null,
|
||||
"error": null,
|
||||
"participants": []
|
||||
},
|
||||
"lastVideoMeta": {
|
||||
"participantSid": "PA_XodNLgkfL4bV",
|
||||
"trackSid": "TR_VSVvE7VrQKNqwD",
|
||||
"width": 320,
|
||||
"height": 180,
|
||||
"timestampUs": 124248690000
|
||||
},
|
||||
"publisherStats": {
|
||||
"rttMs": 5,
|
||||
"outbound": [
|
||||
{
|
||||
"trackSid": "TR_AM3ooPAYg5Q2M6",
|
||||
"source": "microphone",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 98.8,
|
||||
"packetsLost": 0,
|
||||
"audioLevel": 0.305,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_VSVvE7VrQKNqwD",
|
||||
"source": "screenshare",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 2.6,
|
||||
"packetsLost": 0,
|
||||
"fps": 9,
|
||||
"width": 320,
|
||||
"height": 180,
|
||||
"sourceWidth": 320,
|
||||
"sourceHeight": 180,
|
||||
"targetBitrateKbps": 400,
|
||||
"configuredFps": 15,
|
||||
"targetFps": 15,
|
||||
"effectiveFps": 0,
|
||||
"framesProduced": 0,
|
||||
"framesAccepted": 0,
|
||||
"framesDropped": 0,
|
||||
"framesCoalesced": 0,
|
||||
"framesCaptured": 0,
|
||||
"captureFailures": 0,
|
||||
"maxQueueAgeMs": 0,
|
||||
"maxPushLatencyMs": 0,
|
||||
"adaptiveSendTier": "full",
|
||||
"adaptiveSendReason": "stable",
|
||||
"codec": "video/VP8"
|
||||
}
|
||||
],
|
||||
"inbound": [],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 0,
|
||||
"outgoingVideoQueueCapacity": 8,
|
||||
"outgoingVideoMaxQueueDepth": 0,
|
||||
"outgoingVideoFramesProduced": 0,
|
||||
"outgoingVideoFramesAccepted": 0,
|
||||
"outgoingVideoFramesDropped": 0,
|
||||
"outgoingVideoFramesCoalesced": 0,
|
||||
"outgoingVideoFramesCaptured": 0,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 0,
|
||||
"outgoingVideoTargetFps": 15,
|
||||
"outgoingVideoPacingTargetFps": 15,
|
||||
"outgoingVideoMaxQueueAgeMs": 0,
|
||||
"outgoingVideoMaxPushLatencyMs": 0,
|
||||
"outgoingVideoPacingMode": "source",
|
||||
"outgoingVideoBusActive": false,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 27,
|
||||
"adaptiveSendTier": "full",
|
||||
"adaptiveSendReason": "stable"
|
||||
}
|
||||
},
|
||||
"secondaryPublisherStats": null,
|
||||
"subscriberStats": {
|
||||
"rttMs": 5,
|
||||
"outbound": [],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_XodNLgkfL4bV",
|
||||
"trackSid": "TR_AM3ooPAYg5Q2M6",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 99.1,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 1,
|
||||
"audioLevel": 0.307,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_XodNLgkfL4bV",
|
||||
"trackSid": "TR_VSVvE7VrQKNqwD",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 2.6,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 1,
|
||||
"codec": "video/VP8"
|
||||
}
|
||||
],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 0,
|
||||
"outgoingVideoQueueCapacity": 0,
|
||||
"outgoingVideoMaxQueueDepth": 0,
|
||||
"outgoingVideoFramesProduced": 0,
|
||||
"outgoingVideoFramesAccepted": 0,
|
||||
"outgoingVideoFramesDropped": 0,
|
||||
"outgoingVideoFramesCoalesced": 0,
|
||||
"outgoingVideoFramesCaptured": 0,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 0,
|
||||
"outgoingVideoTargetFps": 0,
|
||||
"outgoingVideoPacingTargetFps": 0,
|
||||
"outgoingVideoMaxQueueAgeMs": 0,
|
||||
"outgoingVideoMaxPushLatencyMs": 0,
|
||||
"outgoingVideoPacingMode": "idle",
|
||||
"outgoingVideoBusActive": false,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 0,
|
||||
"adaptiveSendTier": "idle",
|
||||
"adaptiveSendReason": "notPublishing"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
+287
@@ -0,0 +1,287 @@
|
||||
{
|
||||
"status": "pass",
|
||||
"startedAt": "2026-06-05T20:50:00.568Z",
|
||||
"endedAt": "2026-06-05T20:50:17.383Z",
|
||||
"platform": "linux",
|
||||
"arch": "x64",
|
||||
"config": {
|
||||
"url": "ws://100.79.83.54:17880",
|
||||
"serverApiUrl": "http://100.79.83.54:17880",
|
||||
"apiKey": "devkey",
|
||||
"room": "fluxer-webrtc-harness-92677-28ffd7a4-19ee-49cf-87d1-e31ab80864f4",
|
||||
"externalTokens": false,
|
||||
"publisherIdentity": "fluxer-native-publisher-92677",
|
||||
"secondaryPublisherIdentity": "fluxer-native-publisher-2-92677",
|
||||
"subscriberIdentity": "fluxer-native-subscriber-92677",
|
||||
"required": true,
|
||||
"strict": true,
|
||||
"timeoutMs": 90000,
|
||||
"connectTimeoutMs": 30000,
|
||||
"disconnectTimeoutMs": 10000,
|
||||
"probeTimeoutMs": 1500,
|
||||
"durationMs": 15000,
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"expectedWidth": 1280,
|
||||
"expectedHeight": 720,
|
||||
"fps": 30,
|
||||
"minFpsRatio": 0.9,
|
||||
"maxFrameGapMs": 250,
|
||||
"maxAudioFrameGapMs": 0,
|
||||
"maxAvDriftMs": 0,
|
||||
"maxPacketLoss": null,
|
||||
"requireStableResolution": true,
|
||||
"videoPattern": "fast",
|
||||
"videoInput": "nv12",
|
||||
"subscriberVideoQuality": "high",
|
||||
"screenCodecs": ["h264"],
|
||||
"expectedScreenCodecs": ["h264"],
|
||||
"codec": "h264",
|
||||
"expectedScreenCodec": "video/H264",
|
||||
"secondaryPublisher": false,
|
||||
"secondaryPublisherCodec": "h264",
|
||||
"secondaryPublisherCodecExplicit": false,
|
||||
"expectedSecondaryPublisherCodec": "video/H264",
|
||||
"expectedSecondaryPublisherCodecExplicit": false,
|
||||
"screenSimulcast": false,
|
||||
"secondaryPublisherScreenSimulcast": false,
|
||||
"adaptiveSend": true,
|
||||
"minVideoFps": 15,
|
||||
"minResolutionScale": 0.5,
|
||||
"maxAudioBufferMs": 750,
|
||||
"secondaryPublisherMicrophone": false,
|
||||
"secondaryPublisherScreenAudio": false,
|
||||
"maxBitrateBps": 400000,
|
||||
"sampleRate": 48000,
|
||||
"channels": 1,
|
||||
"audioChunkMs": 20,
|
||||
"microphone": false,
|
||||
"screenAudio": false,
|
||||
"dataPacket": false,
|
||||
"subscriptionCycle": false,
|
||||
"validateServerPublishing": true,
|
||||
"camera": false,
|
||||
"cameraDeviceId": null,
|
||||
"expectedCameraCodec": null,
|
||||
"expectedHardwareEncoder": null,
|
||||
"reportPath": "/home/hampus/Development/fluxer/fluxer_desktop/native-media-reports/cachyos-nvidia-livekit-720p-h264-20260605T204959Z.json",
|
||||
"verbose": false,
|
||||
"scenarioName": "codec-h264",
|
||||
"apiSecret": "<redacted>",
|
||||
"e2eeKey": null,
|
||||
"publisherToken": null,
|
||||
"secondaryPublisherToken": null,
|
||||
"subscriberToken": null
|
||||
},
|
||||
"checks": [
|
||||
{
|
||||
"name": "publisher connected",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber connected",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher local screenshare publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote screenshare subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video frames >= 3",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber video frame callback",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screenshare stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video stats count >= 1",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber video resolution 1280x720",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screenshare codec video/H264",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video codec video/H264",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "server publishing API participants listed",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "server sees publisher screenshare publication",
|
||||
"pass": true
|
||||
}
|
||||
],
|
||||
"skippedReason": null,
|
||||
"error": null,
|
||||
"hardwareEncoder": {
|
||||
"available": false,
|
||||
"backend": "none",
|
||||
"compiled": true,
|
||||
"runtime": false,
|
||||
"codecs": [],
|
||||
"zeroCopy": false,
|
||||
"nativeInputs": [],
|
||||
"reason": "no_supported_devices",
|
||||
"detail": "missing NVENC encode session (checked 1 CUDA device; last status NV_ENC_ERR_UNSUPPORTED_DEVICE (2))"
|
||||
},
|
||||
"metrics": {
|
||||
"inboundAudioFrames": 0,
|
||||
"inboundVideoFrames": 465,
|
||||
"strictAudioFrames": 0,
|
||||
"strictVideoFrames": 435,
|
||||
"videoCallbacks": 463,
|
||||
"videoBytes": 640051200,
|
||||
"receivedFps": 28.99,
|
||||
"requiredFps": 27,
|
||||
"maxVideoFrameGapMs": 68,
|
||||
"maxAudioFrameGapMs": 0,
|
||||
"maxVideoFrameGapOverallMs": 68,
|
||||
"maxAudioFrameGapOverallMs": 0,
|
||||
"avDriftMs": null,
|
||||
"maxObservedPacketLoss": 0,
|
||||
"maxObservedPacketLossDelta": 0,
|
||||
"videoResolutionCounts": {
|
||||
"1280x720": 435
|
||||
},
|
||||
"videoResolutionMismatchCount": 0,
|
||||
"droppedVideoFrameCallbacks": 0,
|
||||
"publisherVideoPump": {
|
||||
"input": "nv12",
|
||||
"pattern": "fast",
|
||||
"targetFps": 30,
|
||||
"startedAtMs": 1780692601312,
|
||||
"stoppedAtMs": null,
|
||||
"framesPushed": 483,
|
||||
"framesRejected": 0,
|
||||
"errors": 0,
|
||||
"maxPushGapMs": 37,
|
||||
"lastPushAtMs": 1780692617378,
|
||||
"elapsedMs": 16227,
|
||||
"producedFps": 29.77
|
||||
},
|
||||
"secondaryPublisherVideoPump": null,
|
||||
"serverPublishing": {
|
||||
"fetchedAtMs": 1780692602380,
|
||||
"error": null,
|
||||
"participants": [
|
||||
{
|
||||
"identity": "fluxer-native-publisher-92677",
|
||||
"trackCount": 1,
|
||||
"tracks": [
|
||||
{
|
||||
"sid": "TR_VStBVT57Q9oKAa",
|
||||
"name": "screen",
|
||||
"kind": "video",
|
||||
"source": "screenshare",
|
||||
"mimeType": "video/H264",
|
||||
"muted": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"identity": "fluxer-native-subscriber-92677",
|
||||
"trackCount": 0,
|
||||
"tracks": []
|
||||
}
|
||||
]
|
||||
},
|
||||
"lastVideoMeta": {
|
||||
"participantSid": "PA_89hNCmrznA6A",
|
||||
"trackSid": "TR_VStBVT57Q9oKAa",
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"timestampUs": 68521962000
|
||||
},
|
||||
"publisherStats": {
|
||||
"rttMs": 4,
|
||||
"outbound": [
|
||||
{
|
||||
"trackSid": "TR_VStBVT57Q9oKAa",
|
||||
"source": "screenshare",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 386.9,
|
||||
"packetsLost": 0,
|
||||
"fps": 30,
|
||||
"codec": "video/H264"
|
||||
}
|
||||
],
|
||||
"inbound": [],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 0,
|
||||
"outgoingVideoFramesProduced": 476,
|
||||
"outgoingVideoFramesAccepted": 476,
|
||||
"outgoingVideoFramesDropped": 16,
|
||||
"outgoingVideoFramesCoalesced": 16,
|
||||
"outgoingVideoFramesCaptured": 460,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 28.97,
|
||||
"outgoingVideoTargetFps": 30,
|
||||
"outgoingVideoMaxQueueAgeMs": 34,
|
||||
"outgoingVideoMaxPushLatencyMs": 34,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 0,
|
||||
"adaptiveSendTier": "full",
|
||||
"adaptiveSendReason": "stable"
|
||||
}
|
||||
},
|
||||
"secondaryPublisherStats": null,
|
||||
"subscriberStats": {
|
||||
"rttMs": 5,
|
||||
"outbound": [],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_89hNCmrznA6A",
|
||||
"trackSid": "TR_VStBVT57Q9oKAa",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 386.4,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 2,
|
||||
"codec": "video/H264"
|
||||
}
|
||||
],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 0,
|
||||
"outgoingVideoFramesProduced": 0,
|
||||
"outgoingVideoFramesAccepted": 0,
|
||||
"outgoingVideoFramesDropped": 0,
|
||||
"outgoingVideoFramesCoalesced": 0,
|
||||
"outgoingVideoFramesCaptured": 0,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 0,
|
||||
"outgoingVideoTargetFps": 0,
|
||||
"outgoingVideoMaxQueueAgeMs": 0,
|
||||
"outgoingVideoMaxPushLatencyMs": 0,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 0,
|
||||
"adaptiveSendTier": "idle",
|
||||
"adaptiveSendReason": "notPublishing"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+287
@@ -0,0 +1,287 @@
|
||||
{
|
||||
"status": "fail",
|
||||
"startedAt": "2026-06-05T20:50:29.534Z",
|
||||
"endedAt": "2026-06-05T20:52:00.423Z",
|
||||
"platform": "linux",
|
||||
"arch": "x64",
|
||||
"config": {
|
||||
"url": "ws://100.79.83.54:17880",
|
||||
"serverApiUrl": "http://100.79.83.54:17880",
|
||||
"apiKey": "devkey",
|
||||
"room": "fluxer-webrtc-harness-92838-08153292-483f-4acb-b470-af9847d7597c",
|
||||
"externalTokens": false,
|
||||
"publisherIdentity": "fluxer-native-publisher-92838",
|
||||
"secondaryPublisherIdentity": "fluxer-native-publisher-2-92838",
|
||||
"subscriberIdentity": "fluxer-native-subscriber-92838",
|
||||
"required": true,
|
||||
"strict": true,
|
||||
"timeoutMs": 90000,
|
||||
"connectTimeoutMs": 30000,
|
||||
"disconnectTimeoutMs": 10000,
|
||||
"probeTimeoutMs": 1500,
|
||||
"durationMs": 15000,
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"expectedWidth": 1280,
|
||||
"expectedHeight": 720,
|
||||
"fps": 30,
|
||||
"minFpsRatio": 0.9,
|
||||
"maxFrameGapMs": 250,
|
||||
"maxAudioFrameGapMs": 0,
|
||||
"maxAvDriftMs": 0,
|
||||
"maxPacketLoss": null,
|
||||
"requireStableResolution": true,
|
||||
"videoPattern": "fast",
|
||||
"videoInput": "nv12",
|
||||
"subscriberVideoQuality": "high",
|
||||
"screenCodecs": ["hevc"],
|
||||
"expectedScreenCodecs": ["hevc"],
|
||||
"codec": "hevc",
|
||||
"expectedScreenCodec": "video/H265",
|
||||
"secondaryPublisher": false,
|
||||
"secondaryPublisherCodec": "hevc",
|
||||
"secondaryPublisherCodecExplicit": false,
|
||||
"expectedSecondaryPublisherCodec": "video/H265",
|
||||
"expectedSecondaryPublisherCodecExplicit": false,
|
||||
"screenSimulcast": false,
|
||||
"secondaryPublisherScreenSimulcast": false,
|
||||
"adaptiveSend": true,
|
||||
"minVideoFps": 15,
|
||||
"minResolutionScale": 0.5,
|
||||
"maxAudioBufferMs": 750,
|
||||
"secondaryPublisherMicrophone": false,
|
||||
"secondaryPublisherScreenAudio": false,
|
||||
"maxBitrateBps": 400000,
|
||||
"sampleRate": 48000,
|
||||
"channels": 1,
|
||||
"audioChunkMs": 20,
|
||||
"microphone": false,
|
||||
"screenAudio": false,
|
||||
"dataPacket": false,
|
||||
"subscriptionCycle": false,
|
||||
"validateServerPublishing": true,
|
||||
"camera": false,
|
||||
"cameraDeviceId": null,
|
||||
"expectedCameraCodec": null,
|
||||
"expectedHardwareEncoder": null,
|
||||
"reportPath": "/home/hampus/Development/fluxer/fluxer_desktop/native-media-reports/cachyos-nvidia-livekit-720p-hevc-20260605T205028Z.json",
|
||||
"verbose": false,
|
||||
"scenarioName": "codec-hevc",
|
||||
"apiSecret": "<redacted>",
|
||||
"e2eeKey": null,
|
||||
"publisherToken": null,
|
||||
"secondaryPublisherToken": null,
|
||||
"subscriberToken": null
|
||||
},
|
||||
"checks": [
|
||||
{
|
||||
"name": "publisher connected",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber connected",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher local screenshare publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote screenshare subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video frames >= 3",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber video frame callback",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screenshare stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video stats count >= 1",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber video resolution 1280x720",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screenshare codec video/H265",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video codec video/H265",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "server publishing API participants listed",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "server sees publisher screenshare publication",
|
||||
"pass": false
|
||||
}
|
||||
],
|
||||
"skippedReason": null,
|
||||
"error": "Error: timed out after 90000ms waiting for: publisher outbound screenshare codec video/H265, subscriber inbound video codec video/H265, server sees publisher screenshare publication\n at waitForHarnessSuccess (file:///home/hampus/Development/fluxer/fluxer_desktop/native/webrtc-sender/scripts/livekit-harness.mjs:1329:8)\n at async runHarness (file:///home/hampus/Development/fluxer/fluxer_desktop/native/webrtc-sender/scripts/livekit-harness.mjs:1926:18)\n at async main (file:///home/hampus/Development/fluxer/fluxer_desktop/native/webrtc-sender/scripts/livekit-harness.mjs:2026:18)\n at async file:///home/hampus/Development/fluxer/fluxer_desktop/native/webrtc-sender/scripts/livekit-harness.mjs:2059:19",
|
||||
"hardwareEncoder": {
|
||||
"available": false,
|
||||
"backend": "none",
|
||||
"compiled": true,
|
||||
"runtime": false,
|
||||
"codecs": [],
|
||||
"zeroCopy": false,
|
||||
"nativeInputs": [],
|
||||
"reason": "no_supported_devices",
|
||||
"detail": "missing NVENC encode session (checked 1 CUDA device; last status NV_ENC_ERR_UNSUPPORTED_DEVICE (2))"
|
||||
},
|
||||
"metrics": {
|
||||
"inboundAudioFrames": 0,
|
||||
"inboundVideoFrames": 2611,
|
||||
"strictAudioFrames": 0,
|
||||
"strictVideoFrames": 2610,
|
||||
"videoCallbacks": 2610,
|
||||
"videoBytes": 3608064000,
|
||||
"receivedFps": 29.02,
|
||||
"requiredFps": 27,
|
||||
"maxVideoFrameGapMs": 81,
|
||||
"maxAudioFrameGapMs": 0,
|
||||
"maxVideoFrameGapOverallMs": 81,
|
||||
"maxAudioFrameGapOverallMs": 0,
|
||||
"avDriftMs": null,
|
||||
"maxObservedPacketLoss": 0,
|
||||
"maxObservedPacketLossDelta": 0,
|
||||
"videoResolutionCounts": {
|
||||
"1280x720": 2610
|
||||
},
|
||||
"videoResolutionMismatchCount": 0,
|
||||
"droppedVideoFrameCallbacks": 0,
|
||||
"publisherVideoPump": {
|
||||
"input": "nv12",
|
||||
"pattern": "fast",
|
||||
"targetFps": 30,
|
||||
"startedAtMs": 1780692630259,
|
||||
"stoppedAtMs": null,
|
||||
"framesPushed": 2705,
|
||||
"framesRejected": 0,
|
||||
"errors": 0,
|
||||
"maxPushGapMs": 37,
|
||||
"lastPushAtMs": 1780692720392,
|
||||
"elapsedMs": 90321,
|
||||
"producedFps": 29.95
|
||||
},
|
||||
"secondaryPublisherVideoPump": null,
|
||||
"serverPublishing": {
|
||||
"fetchedAtMs": 1780692720171,
|
||||
"error": null,
|
||||
"participants": [
|
||||
{
|
||||
"identity": "fluxer-native-subscriber-92838",
|
||||
"trackCount": 0,
|
||||
"tracks": []
|
||||
},
|
||||
{
|
||||
"identity": "fluxer-native-publisher-92838",
|
||||
"trackCount": 1,
|
||||
"tracks": [
|
||||
{
|
||||
"sid": "TR_VSr7CavPmttCck",
|
||||
"name": "screen",
|
||||
"kind": "video",
|
||||
"source": "screenshare",
|
||||
"mimeType": "video/VP8",
|
||||
"muted": false
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"lastVideoMeta": {
|
||||
"participantSid": "PA_eQVNaBPkxUPX",
|
||||
"trackSid": "TR_VSr7CavPmttCck",
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"timestampUs": 68625011000
|
||||
},
|
||||
"publisherStats": {
|
||||
"rttMs": 6,
|
||||
"outbound": [
|
||||
{
|
||||
"trackSid": "TR_VSr7CavPmttCck",
|
||||
"source": "screenshare",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 44.7,
|
||||
"packetsLost": 0,
|
||||
"fps": 29,
|
||||
"codec": "video/VP8"
|
||||
}
|
||||
],
|
||||
"inbound": [],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 1,
|
||||
"outgoingVideoFramesProduced": 2697,
|
||||
"outgoingVideoFramesAccepted": 2697,
|
||||
"outgoingVideoFramesDropped": 91,
|
||||
"outgoingVideoFramesCoalesced": 91,
|
||||
"outgoingVideoFramesCaptured": 2605,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 28.98,
|
||||
"outgoingVideoTargetFps": 30,
|
||||
"outgoingVideoMaxQueueAgeMs": 34,
|
||||
"outgoingVideoMaxPushLatencyMs": 34,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 0,
|
||||
"adaptiveSendTier": "full",
|
||||
"adaptiveSendReason": "stable"
|
||||
}
|
||||
},
|
||||
"secondaryPublisherStats": null,
|
||||
"subscriberStats": {
|
||||
"rttMs": 6,
|
||||
"outbound": [],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_eQVNaBPkxUPX",
|
||||
"trackSid": "TR_VSr7CavPmttCck",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 43.1,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 3,
|
||||
"codec": "video/VP8"
|
||||
}
|
||||
],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 0,
|
||||
"outgoingVideoFramesProduced": 0,
|
||||
"outgoingVideoFramesAccepted": 0,
|
||||
"outgoingVideoFramesDropped": 0,
|
||||
"outgoingVideoFramesCoalesced": 0,
|
||||
"outgoingVideoFramesCaptured": 0,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 0,
|
||||
"outgoingVideoTargetFps": 0,
|
||||
"outgoingVideoMaxQueueAgeMs": 0,
|
||||
"outgoingVideoMaxPushLatencyMs": 0,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 0,
|
||||
"adaptiveSendTier": "idle",
|
||||
"adaptiveSendReason": "notPublishing"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+226
@@ -0,0 +1,226 @@
|
||||
{
|
||||
"status": "fail",
|
||||
"startedAt": "2026-06-05T20:56:44.980Z",
|
||||
"endedAt": "2026-06-05T20:56:45.769Z",
|
||||
"platform": "linux",
|
||||
"arch": "x64",
|
||||
"config": {
|
||||
"url": "ws://100.79.83.54:17880",
|
||||
"serverApiUrl": "http://100.79.83.54:17880",
|
||||
"apiKey": "devkey",
|
||||
"room": "fluxer-webrtc-harness-94317-ce85bdff-9476-465a-9f9a-fae49f6c168d",
|
||||
"externalTokens": false,
|
||||
"publisherIdentity": "fluxer-native-publisher-94317",
|
||||
"secondaryPublisherIdentity": "fluxer-native-publisher-2-94317",
|
||||
"subscriberIdentity": "fluxer-native-subscriber-94317",
|
||||
"required": true,
|
||||
"strict": true,
|
||||
"timeoutMs": 90000,
|
||||
"connectTimeoutMs": 30000,
|
||||
"disconnectTimeoutMs": 10000,
|
||||
"probeTimeoutMs": 1500,
|
||||
"durationMs": 15000,
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"expectedWidth": 1280,
|
||||
"expectedHeight": 720,
|
||||
"fps": 30,
|
||||
"minFpsRatio": 0.9,
|
||||
"maxFrameGapMs": 250,
|
||||
"maxAudioFrameGapMs": 0,
|
||||
"maxAvDriftMs": 0,
|
||||
"maxPacketLoss": null,
|
||||
"requireStableResolution": true,
|
||||
"videoPattern": "fast",
|
||||
"videoInput": "nv12",
|
||||
"subscriberVideoQuality": "high",
|
||||
"screenCodecs": ["hevc"],
|
||||
"expectedScreenCodecs": ["hevc"],
|
||||
"codec": "hevc",
|
||||
"expectedScreenCodec": "video/H265",
|
||||
"secondaryPublisher": false,
|
||||
"secondaryPublisherCodec": "hevc",
|
||||
"secondaryPublisherCodecExplicit": false,
|
||||
"expectedSecondaryPublisherCodec": "video/H265",
|
||||
"expectedSecondaryPublisherCodecExplicit": false,
|
||||
"screenSimulcast": false,
|
||||
"secondaryPublisherScreenSimulcast": false,
|
||||
"adaptiveSend": true,
|
||||
"minVideoFps": 15,
|
||||
"minResolutionScale": 0.5,
|
||||
"maxAudioBufferMs": 750,
|
||||
"secondaryPublisherMicrophone": false,
|
||||
"secondaryPublisherScreenAudio": false,
|
||||
"maxBitrateBps": 400000,
|
||||
"sampleRate": 48000,
|
||||
"channels": 1,
|
||||
"audioChunkMs": 20,
|
||||
"microphone": false,
|
||||
"screenAudio": false,
|
||||
"dataPacket": false,
|
||||
"subscriptionCycle": false,
|
||||
"validateServerPublishing": true,
|
||||
"camera": false,
|
||||
"cameraDeviceId": null,
|
||||
"expectedCameraCodec": null,
|
||||
"expectedHardwareEncoder": null,
|
||||
"reportPath": "/home/hampus/Development/fluxer/fluxer_desktop/native-media-reports/cachyos-nvidia-livekit-720p-hevc-failfast-20260605T205643Z.json",
|
||||
"verbose": false,
|
||||
"scenarioName": "codec-hevc",
|
||||
"apiSecret": "<redacted>",
|
||||
"e2eeKey": null,
|
||||
"publisherToken": null,
|
||||
"secondaryPublisherToken": null,
|
||||
"subscriberToken": null
|
||||
},
|
||||
"checks": [
|
||||
{
|
||||
"name": "publisher connected",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber connected",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher local screenshare publication",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote screenshare subscription",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video frames >= 3",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber video frame callback",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screenshare stats",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video stats",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video stats count >= 1",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber video resolution 1280x720",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screenshare codec video/H265",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video codec video/H265",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "server publishing API participants listed",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "server sees publisher screenshare publication",
|
||||
"pass": false
|
||||
}
|
||||
],
|
||||
"skippedReason": null,
|
||||
"error": "Error: H.265 publishing requires hardware encoder support; missing NVENC encode session (checked 1 CUDA device; last status NV_ENC_ERR_UNSUPPORTED_DEVICE (2))",
|
||||
"hardwareEncoder": {
|
||||
"available": false,
|
||||
"backend": "none",
|
||||
"compiled": true,
|
||||
"runtime": false,
|
||||
"codecs": [],
|
||||
"zeroCopy": false,
|
||||
"nativeInputs": [],
|
||||
"reason": "no_supported_devices",
|
||||
"detail": "missing NVENC encode session (checked 1 CUDA device; last status NV_ENC_ERR_UNSUPPORTED_DEVICE (2))"
|
||||
},
|
||||
"metrics": {
|
||||
"inboundAudioFrames": 0,
|
||||
"inboundVideoFrames": 0,
|
||||
"strictAudioFrames": 0,
|
||||
"strictVideoFrames": 0,
|
||||
"videoCallbacks": 0,
|
||||
"videoBytes": 0,
|
||||
"receivedFps": 0,
|
||||
"requiredFps": 27,
|
||||
"maxVideoFrameGapMs": 0,
|
||||
"maxAudioFrameGapMs": 0,
|
||||
"maxVideoFrameGapOverallMs": 0,
|
||||
"maxAudioFrameGapOverallMs": 0,
|
||||
"avDriftMs": null,
|
||||
"maxObservedPacketLoss": 0,
|
||||
"maxObservedPacketLossDelta": 0,
|
||||
"videoResolutionCounts": {},
|
||||
"videoResolutionMismatchCount": 0,
|
||||
"droppedVideoFrameCallbacks": 0,
|
||||
"publisherVideoPump": null,
|
||||
"secondaryPublisherVideoPump": null,
|
||||
"serverPublishing": {
|
||||
"fetchedAtMs": null,
|
||||
"error": null,
|
||||
"participants": []
|
||||
},
|
||||
"lastVideoMeta": null,
|
||||
"publisherStats": {
|
||||
"rttMs": null,
|
||||
"outbound": [],
|
||||
"inbound": [],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 0,
|
||||
"outgoingVideoFramesProduced": 0,
|
||||
"outgoingVideoFramesAccepted": 0,
|
||||
"outgoingVideoFramesDropped": 0,
|
||||
"outgoingVideoFramesCoalesced": 0,
|
||||
"outgoingVideoFramesCaptured": 0,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 0,
|
||||
"outgoingVideoTargetFps": 0,
|
||||
"outgoingVideoMaxQueueAgeMs": 0,
|
||||
"outgoingVideoMaxPushLatencyMs": 0,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 0,
|
||||
"adaptiveSendTier": "idle",
|
||||
"adaptiveSendReason": "notPublishing"
|
||||
}
|
||||
},
|
||||
"secondaryPublisherStats": null,
|
||||
"subscriberStats": {
|
||||
"rttMs": null,
|
||||
"outbound": [],
|
||||
"inbound": [],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 0,
|
||||
"outgoingVideoFramesProduced": 0,
|
||||
"outgoingVideoFramesAccepted": 0,
|
||||
"outgoingVideoFramesDropped": 0,
|
||||
"outgoingVideoFramesCoalesced": 0,
|
||||
"outgoingVideoFramesCaptured": 0,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 0,
|
||||
"outgoingVideoTargetFps": 0,
|
||||
"outgoingVideoMaxQueueAgeMs": 0,
|
||||
"outgoingVideoMaxPushLatencyMs": 0,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 0,
|
||||
"adaptiveSendTier": "idle",
|
||||
"adaptiveSendReason": "notPublishing"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+637
@@ -0,0 +1,637 @@
|
||||
{
|
||||
"status": "pass",
|
||||
"startedAt": "2026-06-05T20:57:06.276Z",
|
||||
"endedAt": "2026-06-05T20:57:28.255Z",
|
||||
"platform": "linux",
|
||||
"arch": "x64",
|
||||
"config": {
|
||||
"url": "ws://100.79.83.54:17880",
|
||||
"serverApiUrl": "http://100.79.83.54:17880",
|
||||
"apiKey": "devkey",
|
||||
"room": "fluxer-webrtc-harness-94553-a59031d7-277a-4d31-a290-59cea2c79f1c",
|
||||
"externalTokens": false,
|
||||
"publisherIdentity": "fluxer-native-publisher-94553",
|
||||
"secondaryPublisherIdentity": "fluxer-native-publisher-2-94553",
|
||||
"subscriberIdentity": "fluxer-native-subscriber-94553",
|
||||
"required": true,
|
||||
"strict": true,
|
||||
"timeoutMs": 90000,
|
||||
"connectTimeoutMs": 30000,
|
||||
"disconnectTimeoutMs": 10000,
|
||||
"probeTimeoutMs": 1500,
|
||||
"durationMs": 20000,
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"expectedWidth": 1280,
|
||||
"expectedHeight": 720,
|
||||
"fps": 30,
|
||||
"minFpsRatio": 0.9,
|
||||
"maxFrameGapMs": 250,
|
||||
"maxAudioFrameGapMs": 250,
|
||||
"maxAvDriftMs": 150,
|
||||
"maxPacketLoss": null,
|
||||
"requireStableResolution": true,
|
||||
"videoPattern": "fast",
|
||||
"videoInput": "nv12",
|
||||
"subscriberVideoQuality": "high",
|
||||
"screenCodecs": ["h264"],
|
||||
"expectedScreenCodecs": ["h264"],
|
||||
"codec": "h264",
|
||||
"expectedScreenCodec": "video/H264",
|
||||
"secondaryPublisher": true,
|
||||
"secondaryPublisherCodec": "vp8",
|
||||
"secondaryPublisherCodecExplicit": true,
|
||||
"expectedSecondaryPublisherCodec": "video/VP8",
|
||||
"expectedSecondaryPublisherCodecExplicit": true,
|
||||
"screenSimulcast": false,
|
||||
"secondaryPublisherScreenSimulcast": false,
|
||||
"adaptiveSend": true,
|
||||
"minVideoFps": 15,
|
||||
"minResolutionScale": 0.5,
|
||||
"maxAudioBufferMs": 750,
|
||||
"secondaryPublisherMicrophone": true,
|
||||
"secondaryPublisherScreenAudio": true,
|
||||
"maxBitrateBps": 400000,
|
||||
"sampleRate": 48000,
|
||||
"channels": 1,
|
||||
"audioChunkMs": 20,
|
||||
"microphone": true,
|
||||
"screenAudio": true,
|
||||
"dataPacket": true,
|
||||
"subscriptionCycle": false,
|
||||
"validateServerPublishing": true,
|
||||
"camera": false,
|
||||
"cameraDeviceId": null,
|
||||
"expectedCameraCodec": null,
|
||||
"expectedHardwareEncoder": null,
|
||||
"reportPath": "/home/hampus/Development/fluxer/fluxer_desktop/native-media-reports/cachyos-nvidia-livekit-alltracks-serverpub-mixed-20260605T205705Z.json",
|
||||
"verbose": false,
|
||||
"scenarioName": "codec-h264-with-vp8",
|
||||
"apiSecret": "<redacted>",
|
||||
"e2eeKey": null,
|
||||
"publisherToken": null,
|
||||
"secondaryPublisherToken": null,
|
||||
"subscriberToken": null
|
||||
},
|
||||
"checks": [
|
||||
{
|
||||
"name": "publisher connected",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber connected",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher local screenshare publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote screenshare subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video frames >= 6",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber video frame callback",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screenshare stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video stats count >= 2",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber video resolution 1280x720",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber aggregate inbound audio frames >= 12",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio stats count >= 4",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher local microphone publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote microphone subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio frames >= 12",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound microphone stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher local screen-share audio publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote screen-share audio subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screen-share audio stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher connected",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher local screenshare publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote secondary screenshare subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher outbound screenshare stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher outbound screenshare codec video/VP8",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound secondary codec video/VP8",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher local microphone publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote secondary microphone subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher outbound microphone stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher local screen-share audio publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote secondary screen-share audio subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher outbound screen-share audio stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber data packet received",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber secondary data packet received",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screenshare codec video/H264",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video codec video/H264",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "server publishing API participants listed",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "server sees publisher screenshare publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "server sees publisher microphone publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "server sees publisher screen-share audio publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "server sees secondary publisher screenshare publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "server sees secondary publisher microphone publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "server sees secondary publisher screen-share audio publication",
|
||||
"pass": true
|
||||
}
|
||||
],
|
||||
"skippedReason": null,
|
||||
"error": null,
|
||||
"hardwareEncoder": {
|
||||
"available": false,
|
||||
"backend": "none",
|
||||
"compiled": true,
|
||||
"runtime": false,
|
||||
"codecs": [],
|
||||
"zeroCopy": false,
|
||||
"nativeInputs": [],
|
||||
"reason": "no_supported_devices",
|
||||
"detail": "missing NVENC encode session (checked 1 CUDA device; last status NV_ENC_ERR_UNSUPPORTED_DEVICE (2))"
|
||||
},
|
||||
"metrics": {
|
||||
"inboundAudioFrames": 8352,
|
||||
"inboundVideoFrames": 1182,
|
||||
"strictAudioFrames": 200,
|
||||
"strictVideoFrames": 1164,
|
||||
"videoCallbacks": 1180,
|
||||
"videoBytes": 1631232000,
|
||||
"receivedFps": 58.16,
|
||||
"requiredFps": 27,
|
||||
"maxVideoFrameGapMs": 98,
|
||||
"maxAudioFrameGapMs": 101,
|
||||
"maxVideoFrameGapOverallMs": 98,
|
||||
"maxAudioFrameGapOverallMs": 101,
|
||||
"avDriftMs": 36,
|
||||
"maxObservedPacketLoss": 0,
|
||||
"maxObservedPacketLossDelta": 0,
|
||||
"videoResolutionCounts": {
|
||||
"1280x720": 1164
|
||||
},
|
||||
"videoResolutionMismatchCount": 0,
|
||||
"droppedVideoFrameCallbacks": 0,
|
||||
"publisherVideoPump": {
|
||||
"input": "nv12",
|
||||
"pattern": "fast",
|
||||
"targetFps": 30,
|
||||
"startedAtMs": 1780693027399,
|
||||
"stoppedAtMs": null,
|
||||
"framesPushed": 626,
|
||||
"framesRejected": 0,
|
||||
"errors": 0,
|
||||
"maxPushGapMs": 39,
|
||||
"lastPushAtMs": 1780693048233,
|
||||
"elapsedMs": 21015,
|
||||
"producedFps": 29.79
|
||||
},
|
||||
"secondaryPublisherVideoPump": {
|
||||
"input": "nv12",
|
||||
"pattern": "fast",
|
||||
"targetFps": 30,
|
||||
"startedAtMs": 1780693027400,
|
||||
"stoppedAtMs": null,
|
||||
"framesPushed": 626,
|
||||
"framesRejected": 0,
|
||||
"errors": 0,
|
||||
"maxPushGapMs": 40,
|
||||
"lastPushAtMs": 1780693048233,
|
||||
"elapsedMs": 21014,
|
||||
"producedFps": 29.79
|
||||
},
|
||||
"serverPublishing": {
|
||||
"fetchedAtMs": 1780693027997,
|
||||
"error": null,
|
||||
"participants": [
|
||||
{
|
||||
"identity": "fluxer-native-publisher-94553",
|
||||
"trackCount": 3,
|
||||
"tracks": [
|
||||
{
|
||||
"sid": "TR_AsXuPkpunfLw9E",
|
||||
"name": "screen-audio",
|
||||
"kind": "audio",
|
||||
"source": "screenshareAudio",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_VStW6iBWUPJvYp",
|
||||
"name": "screen",
|
||||
"kind": "video",
|
||||
"source": "screenshare",
|
||||
"mimeType": "video/H264",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_AMraWSQbYVLoud",
|
||||
"name": "mic",
|
||||
"kind": "audio",
|
||||
"source": "microphone",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"identity": "fluxer-native-subscriber-94553",
|
||||
"trackCount": 0,
|
||||
"tracks": []
|
||||
},
|
||||
{
|
||||
"identity": "fluxer-native-publisher-2-94553",
|
||||
"trackCount": 3,
|
||||
"tracks": [
|
||||
{
|
||||
"sid": "TR_VSDUf6mLBmkksq",
|
||||
"name": "screen",
|
||||
"kind": "video",
|
||||
"source": "screenshare",
|
||||
"mimeType": "video/VP8",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_AMuo9vvgBhxrxp",
|
||||
"name": "mic",
|
||||
"kind": "audio",
|
||||
"source": "microphone",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_Asf2caReF2dUoe",
|
||||
"name": "screen-audio",
|
||||
"kind": "audio",
|
||||
"source": "screenshareAudio",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"lastVideoMeta": {
|
||||
"participantSid": "PA_sFVVyQMPfG8Z",
|
||||
"trackSid": "TR_VSDUf6mLBmkksq",
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"timestampUs": 68952853000
|
||||
},
|
||||
"publisherStats": {
|
||||
"rttMs": 15,
|
||||
"outbound": [
|
||||
{
|
||||
"trackSid": "TR_VStW6iBWUPJvYp",
|
||||
"source": "screenshare",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 399.8,
|
||||
"packetsLost": 0,
|
||||
"fps": 29,
|
||||
"codec": "video/H264"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_AsXuPkpunfLw9E",
|
||||
"source": "screenshareAudio",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 258.9,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_AMraWSQbYVLoud",
|
||||
"source": "microphone",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 97.8,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
}
|
||||
],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_sFVVyQMPfG8Z",
|
||||
"trackSid": "TR_AMuo9vvgBhxrxp",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 104.8,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 3,
|
||||
"audioLevel": 0.307,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_sFVVyQMPfG8Z",
|
||||
"trackSid": "TR_Asf2caReF2dUoe",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 274.6,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 2,
|
||||
"audioLevel": 0.307,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_sFVVyQMPfG8Z",
|
||||
"trackSid": "TR_VSDUf6mLBmkksq",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 31.6,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 5,
|
||||
"codec": "video/VP8"
|
||||
}
|
||||
],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 0,
|
||||
"outgoingVideoFramesProduced": 617,
|
||||
"outgoingVideoFramesAccepted": 617,
|
||||
"outgoingVideoFramesDropped": 19,
|
||||
"outgoingVideoFramesCoalesced": 19,
|
||||
"outgoingVideoFramesCaptured": 598,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 29.05,
|
||||
"outgoingVideoTargetFps": 30,
|
||||
"outgoingVideoMaxQueueAgeMs": 33,
|
||||
"outgoingVideoMaxPushLatencyMs": 34,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 30,
|
||||
"adaptiveSendTier": "full",
|
||||
"adaptiveSendReason": "stable"
|
||||
}
|
||||
},
|
||||
"secondaryPublisherStats": {
|
||||
"rttMs": 38,
|
||||
"outbound": [
|
||||
{
|
||||
"trackSid": "TR_Asf2caReF2dUoe",
|
||||
"source": "screenshareAudio",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 261.7,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_VSDUf6mLBmkksq",
|
||||
"source": "screenshare",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 29.4,
|
||||
"packetsLost": 0,
|
||||
"fps": 29,
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_AMuo9vvgBhxrxp",
|
||||
"source": "microphone",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 98.8,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
}
|
||||
],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_mQQgkdVbS4Wi",
|
||||
"trackSid": "TR_AsXuPkpunfLw9E",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 265.5,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 3,
|
||||
"audioLevel": 0.307,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_mQQgkdVbS4Wi",
|
||||
"trackSid": "TR_VStW6iBWUPJvYp",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 402.2,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 5,
|
||||
"codec": "video/H264"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_mQQgkdVbS4Wi",
|
||||
"trackSid": "TR_AMraWSQbYVLoud",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 100.3,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 2,
|
||||
"audioLevel": 0.307,
|
||||
"codec": "audio/opus"
|
||||
}
|
||||
],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 0,
|
||||
"outgoingVideoFramesProduced": 618,
|
||||
"outgoingVideoFramesAccepted": 618,
|
||||
"outgoingVideoFramesDropped": 19,
|
||||
"outgoingVideoFramesCoalesced": 19,
|
||||
"outgoingVideoFramesCaptured": 599,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 29.07,
|
||||
"outgoingVideoTargetFps": 30,
|
||||
"outgoingVideoMaxQueueAgeMs": 33,
|
||||
"outgoingVideoMaxPushLatencyMs": 34,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 30,
|
||||
"adaptiveSendTier": "full",
|
||||
"adaptiveSendReason": "stable"
|
||||
}
|
||||
},
|
||||
"subscriberStats": {
|
||||
"rttMs": 6,
|
||||
"outbound": [],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_sFVVyQMPfG8Z",
|
||||
"trackSid": "TR_AMuo9vvgBhxrxp",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 100.8,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 3,
|
||||
"audioLevel": 0.307,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_sFVVyQMPfG8Z",
|
||||
"trackSid": "TR_VSDUf6mLBmkksq",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 29.4,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 5,
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_sFVVyQMPfG8Z",
|
||||
"trackSid": "TR_Asf2caReF2dUoe",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 271.7,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 2,
|
||||
"audioLevel": 0.307,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_mQQgkdVbS4Wi",
|
||||
"trackSid": "TR_VStW6iBWUPJvYp",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 399.8,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 5,
|
||||
"codec": "video/H264"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_mQQgkdVbS4Wi",
|
||||
"trackSid": "TR_AMraWSQbYVLoud",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 99.8,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 2,
|
||||
"audioLevel": 0.307,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_mQQgkdVbS4Wi",
|
||||
"trackSid": "TR_AsXuPkpunfLw9E",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 263.9,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 3,
|
||||
"audioLevel": 0.307,
|
||||
"codec": "audio/opus"
|
||||
}
|
||||
],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 0,
|
||||
"outgoingVideoFramesProduced": 0,
|
||||
"outgoingVideoFramesAccepted": 0,
|
||||
"outgoingVideoFramesDropped": 0,
|
||||
"outgoingVideoFramesCoalesced": 0,
|
||||
"outgoingVideoFramesCaptured": 0,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 0,
|
||||
"outgoingVideoTargetFps": 0,
|
||||
"outgoingVideoMaxQueueAgeMs": 0,
|
||||
"outgoingVideoMaxPushLatencyMs": 0,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 0,
|
||||
"adaptiveSendTier": "idle",
|
||||
"adaptiveSendReason": "notPublishing"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+290
@@ -0,0 +1,290 @@
|
||||
{
|
||||
"status": "pass",
|
||||
"startedAt": "2026-06-05T20:41:48.766Z",
|
||||
"endedAt": "2026-06-05T20:42:05.685Z",
|
||||
"platform": "darwin",
|
||||
"arch": "arm64",
|
||||
"config": {
|
||||
"url": "ws://127.0.0.1:17880",
|
||||
"serverApiUrl": "http://127.0.0.1:17880",
|
||||
"apiKey": "devkey",
|
||||
"room": "fluxer-webrtc-harness-99979-bebc8448-fca8-4318-84fb-debd59234bd3",
|
||||
"externalTokens": false,
|
||||
"publisherIdentity": "fluxer-native-publisher-99979",
|
||||
"secondaryPublisherIdentity": "fluxer-native-publisher-2-99979",
|
||||
"subscriberIdentity": "fluxer-native-subscriber-99979",
|
||||
"required": true,
|
||||
"strict": true,
|
||||
"timeoutMs": 90000,
|
||||
"connectTimeoutMs": 30000,
|
||||
"disconnectTimeoutMs": 10000,
|
||||
"probeTimeoutMs": 1500,
|
||||
"durationMs": 15000,
|
||||
"width": 3840,
|
||||
"height": 2160,
|
||||
"expectedWidth": 3840,
|
||||
"expectedHeight": 2160,
|
||||
"fps": 60,
|
||||
"minFpsRatio": 0.8,
|
||||
"maxFrameGapMs": 250,
|
||||
"maxAudioFrameGapMs": 0,
|
||||
"maxAvDriftMs": 0,
|
||||
"maxPacketLoss": null,
|
||||
"requireStableResolution": true,
|
||||
"videoPattern": "fast",
|
||||
"videoInput": "nv12",
|
||||
"subscriberVideoQuality": "high",
|
||||
"screenCodecs": ["h264"],
|
||||
"expectedScreenCodecs": ["h264"],
|
||||
"codec": "h264",
|
||||
"expectedScreenCodec": "video/H264",
|
||||
"secondaryPublisher": false,
|
||||
"secondaryPublisherCodec": "h264",
|
||||
"secondaryPublisherCodecExplicit": false,
|
||||
"expectedSecondaryPublisherCodec": "video/H264",
|
||||
"expectedSecondaryPublisherCodecExplicit": false,
|
||||
"screenSimulcast": false,
|
||||
"secondaryPublisherScreenSimulcast": false,
|
||||
"adaptiveSend": false,
|
||||
"minVideoFps": 24,
|
||||
"minResolutionScale": 0.5,
|
||||
"maxAudioBufferMs": 750,
|
||||
"secondaryPublisherMicrophone": false,
|
||||
"secondaryPublisherScreenAudio": false,
|
||||
"maxBitrateBps": 80000000,
|
||||
"sampleRate": 48000,
|
||||
"channels": 1,
|
||||
"audioChunkMs": 20,
|
||||
"microphone": false,
|
||||
"screenAudio": false,
|
||||
"dataPacket": false,
|
||||
"subscriptionCycle": false,
|
||||
"validateServerPublishing": true,
|
||||
"camera": false,
|
||||
"cameraDeviceId": null,
|
||||
"expectedCameraCodec": null,
|
||||
"expectedHardwareEncoder": "videotoolbox",
|
||||
"reportPath": "/Users/hampus/Development/fluxer/fluxer_desktop/native-media-reports/mac-m3-ultra-livekit-4k60-h264-noadaptive-20260605T204148Z.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 3840x2160",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screenshare codec video/H264",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video codec video/H264",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "hardware encoder backend videotoolbox",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "server publishing API participants listed",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "server sees publisher screenshare publication",
|
||||
"pass": true
|
||||
}
|
||||
],
|
||||
"skippedReason": null,
|
||||
"error": null,
|
||||
"hardwareEncoder": {
|
||||
"available": true,
|
||||
"backend": "videotoolbox",
|
||||
"compiled": true,
|
||||
"runtime": true,
|
||||
"codecs": ["h264", "h265"],
|
||||
"zeroCopy": false,
|
||||
"nativeInputs": [],
|
||||
"detail": "VideoToolbox can create hardware-accelerated compression sessions for h264, h265; supported hardware-codec probe set: h264, h265"
|
||||
},
|
||||
"metrics": {
|
||||
"inboundAudioFrames": 0,
|
||||
"inboundVideoFrames": 787,
|
||||
"strictAudioFrames": 0,
|
||||
"strictVideoFrames": 783,
|
||||
"videoCallbacks": 786,
|
||||
"videoBytes": 9779097600,
|
||||
"receivedFps": 52.46,
|
||||
"requiredFps": 48,
|
||||
"maxVideoFrameGapMs": 49,
|
||||
"maxAudioFrameGapMs": 0,
|
||||
"maxVideoFrameGapOverallMs": 313,
|
||||
"maxAudioFrameGapOverallMs": 0,
|
||||
"avDriftMs": null,
|
||||
"maxObservedPacketLoss": 12,
|
||||
"maxObservedPacketLossDelta": 11,
|
||||
"videoResolutionCounts": {
|
||||
"3840x2160": 783
|
||||
},
|
||||
"videoResolutionMismatchCount": 0,
|
||||
"droppedVideoFrameCallbacks": 0,
|
||||
"publisherVideoPump": {
|
||||
"input": "nv12",
|
||||
"pattern": "fast",
|
||||
"targetFps": 60,
|
||||
"startedAtMs": 1780692109289,
|
||||
"stoppedAtMs": null,
|
||||
"framesPushed": 982,
|
||||
"framesRejected": 0,
|
||||
"errors": 0,
|
||||
"maxPushGapMs": 44,
|
||||
"lastPushAtMs": 1780692125674,
|
||||
"elapsedMs": 16404,
|
||||
"producedFps": 59.86
|
||||
},
|
||||
"secondaryPublisherVideoPump": null,
|
||||
"serverPublishing": {
|
||||
"fetchedAtMs": 1780692110403,
|
||||
"error": null,
|
||||
"participants": [
|
||||
{
|
||||
"identity": "fluxer-native-subscriber-99979",
|
||||
"trackCount": 0,
|
||||
"tracks": []
|
||||
},
|
||||
{
|
||||
"identity": "fluxer-native-publisher-99979",
|
||||
"trackCount": 1,
|
||||
"tracks": [
|
||||
{
|
||||
"sid": "TR_VShAhgz9DukUav",
|
||||
"name": "screen",
|
||||
"kind": "video",
|
||||
"source": "screenshare",
|
||||
"mimeType": "video/H264",
|
||||
"muted": false
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"lastVideoMeta": {
|
||||
"participantSid": "PA_7vLduTJN79oF",
|
||||
"trackSid": "TR_VShAhgz9DukUav",
|
||||
"width": 3840,
|
||||
"height": 2160,
|
||||
"timestampUs": 246972075000
|
||||
},
|
||||
"publisherStats": {
|
||||
"rttMs": 1,
|
||||
"outbound": [
|
||||
{
|
||||
"trackSid": "TR_VShAhgz9DukUav",
|
||||
"source": "screenshare",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 226,
|
||||
"packetsLost": 0,
|
||||
"fps": 53,
|
||||
"codec": "video/H264"
|
||||
}
|
||||
],
|
||||
"inbound": [],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 1,
|
||||
"outgoingVideoFramesProduced": 943,
|
||||
"outgoingVideoFramesAccepted": 943,
|
||||
"outgoingVideoFramesDropped": 80,
|
||||
"outgoingVideoFramesCoalesced": 80,
|
||||
"outgoingVideoFramesCaptured": 862,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 54.78,
|
||||
"outgoingVideoTargetFps": 60,
|
||||
"outgoingVideoMaxQueueAgeMs": 18,
|
||||
"outgoingVideoMaxPushLatencyMs": 18,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 0,
|
||||
"adaptiveSendTier": "full",
|
||||
"adaptiveSendReason": "adaptiveDisabled"
|
||||
}
|
||||
},
|
||||
"secondaryPublisherStats": null,
|
||||
"subscriberStats": {
|
||||
"rttMs": 1,
|
||||
"outbound": [],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_7vLduTJN79oF",
|
||||
"trackSid": "TR_VShAhgz9DukUav",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 226.1,
|
||||
"packetsLost": 12,
|
||||
"jitterMs": 4,
|
||||
"codec": "video/H264"
|
||||
}
|
||||
],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 0,
|
||||
"outgoingVideoFramesProduced": 0,
|
||||
"outgoingVideoFramesAccepted": 0,
|
||||
"outgoingVideoFramesDropped": 0,
|
||||
"outgoingVideoFramesCoalesced": 0,
|
||||
"outgoingVideoFramesCaptured": 0,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 0,
|
||||
"outgoingVideoTargetFps": 0,
|
||||
"outgoingVideoMaxQueueAgeMs": 0,
|
||||
"outgoingVideoMaxPushLatencyMs": 0,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 0,
|
||||
"adaptiveSendTier": "idle",
|
||||
"adaptiveSendReason": "notPublishing"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+290
@@ -0,0 +1,290 @@
|
||||
{
|
||||
"status": "pass",
|
||||
"startedAt": "2026-06-05T20:42:57.137Z",
|
||||
"endedAt": "2026-06-05T20:43:14.930Z",
|
||||
"platform": "darwin",
|
||||
"arch": "arm64",
|
||||
"config": {
|
||||
"url": "ws://127.0.0.1:17880",
|
||||
"serverApiUrl": "http://127.0.0.1:17880",
|
||||
"apiKey": "devkey",
|
||||
"room": "fluxer-webrtc-harness-215-d2420544-1d14-499d-b7ed-39246026eeba",
|
||||
"externalTokens": false,
|
||||
"publisherIdentity": "fluxer-native-publisher-215",
|
||||
"secondaryPublisherIdentity": "fluxer-native-publisher-2-215",
|
||||
"subscriberIdentity": "fluxer-native-subscriber-215",
|
||||
"required": true,
|
||||
"strict": true,
|
||||
"timeoutMs": 90000,
|
||||
"connectTimeoutMs": 30000,
|
||||
"disconnectTimeoutMs": 10000,
|
||||
"probeTimeoutMs": 1500,
|
||||
"durationMs": 15000,
|
||||
"width": 3840,
|
||||
"height": 2160,
|
||||
"expectedWidth": 3840,
|
||||
"expectedHeight": 2160,
|
||||
"fps": 60,
|
||||
"minFpsRatio": 0.8,
|
||||
"maxFrameGapMs": 250,
|
||||
"maxAudioFrameGapMs": 0,
|
||||
"maxAvDriftMs": 0,
|
||||
"maxPacketLoss": null,
|
||||
"requireStableResolution": true,
|
||||
"videoPattern": "fast",
|
||||
"videoInput": "nv12",
|
||||
"subscriberVideoQuality": "high",
|
||||
"screenCodecs": ["h264"],
|
||||
"expectedScreenCodecs": ["h264"],
|
||||
"codec": "h264",
|
||||
"expectedScreenCodec": "video/H264",
|
||||
"secondaryPublisher": false,
|
||||
"secondaryPublisherCodec": "h264",
|
||||
"secondaryPublisherCodecExplicit": false,
|
||||
"expectedSecondaryPublisherCodec": "video/H264",
|
||||
"expectedSecondaryPublisherCodecExplicit": false,
|
||||
"screenSimulcast": false,
|
||||
"secondaryPublisherScreenSimulcast": false,
|
||||
"adaptiveSend": false,
|
||||
"minVideoFps": 24,
|
||||
"minResolutionScale": 0.5,
|
||||
"maxAudioBufferMs": 750,
|
||||
"secondaryPublisherMicrophone": false,
|
||||
"secondaryPublisherScreenAudio": false,
|
||||
"maxBitrateBps": 80000000,
|
||||
"sampleRate": 48000,
|
||||
"channels": 1,
|
||||
"audioChunkMs": 20,
|
||||
"microphone": false,
|
||||
"screenAudio": false,
|
||||
"dataPacket": false,
|
||||
"subscriptionCycle": false,
|
||||
"validateServerPublishing": true,
|
||||
"camera": false,
|
||||
"cameraDeviceId": null,
|
||||
"expectedCameraCodec": null,
|
||||
"expectedHardwareEncoder": "videotoolbox",
|
||||
"reportPath": "/Users/hampus/Development/fluxer/fluxer_desktop/native-media-reports/mac-m3-ultra-livekit-4k60-h264-restarted-20260605T204256Z.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 3840x2160",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screenshare codec video/H264",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video codec video/H264",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "hardware encoder backend videotoolbox",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "server publishing API participants listed",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "server sees publisher screenshare publication",
|
||||
"pass": true
|
||||
}
|
||||
],
|
||||
"skippedReason": null,
|
||||
"error": null,
|
||||
"hardwareEncoder": {
|
||||
"available": true,
|
||||
"backend": "videotoolbox",
|
||||
"compiled": true,
|
||||
"runtime": true,
|
||||
"codecs": ["h264", "h265"],
|
||||
"zeroCopy": false,
|
||||
"nativeInputs": [],
|
||||
"detail": "VideoToolbox can create hardware-accelerated compression sessions for h264, h265; supported hardware-codec probe set: h264, h265"
|
||||
},
|
||||
"metrics": {
|
||||
"inboundAudioFrames": 0,
|
||||
"inboundVideoFrames": 835,
|
||||
"strictAudioFrames": 0,
|
||||
"strictVideoFrames": 780,
|
||||
"videoCallbacks": 835,
|
||||
"videoBytes": 10388736000,
|
||||
"receivedFps": 51.9,
|
||||
"requiredFps": 48,
|
||||
"maxVideoFrameGapMs": 103,
|
||||
"maxAudioFrameGapMs": 0,
|
||||
"maxVideoFrameGapOverallMs": 133,
|
||||
"maxAudioFrameGapOverallMs": 0,
|
||||
"avDriftMs": null,
|
||||
"maxObservedPacketLoss": 8,
|
||||
"maxObservedPacketLossDelta": 2,
|
||||
"videoResolutionCounts": {
|
||||
"3840x2160": 780
|
||||
},
|
||||
"videoResolutionMismatchCount": 0,
|
||||
"droppedVideoFrameCallbacks": 0,
|
||||
"publisherVideoPump": {
|
||||
"input": "nv12",
|
||||
"pattern": "fast",
|
||||
"targetFps": 60,
|
||||
"startedAtMs": 1780692177759,
|
||||
"stoppedAtMs": null,
|
||||
"framesPushed": 1029,
|
||||
"framesRejected": 0,
|
||||
"errors": 0,
|
||||
"maxPushGapMs": 47,
|
||||
"lastPushAtMs": 1780692194929,
|
||||
"elapsedMs": 17180,
|
||||
"producedFps": 59.9
|
||||
},
|
||||
"secondaryPublisherVideoPump": null,
|
||||
"serverPublishing": {
|
||||
"fetchedAtMs": 1780692179914,
|
||||
"error": null,
|
||||
"participants": [
|
||||
{
|
||||
"identity": "fluxer-native-subscriber-215",
|
||||
"trackCount": 0,
|
||||
"tracks": []
|
||||
},
|
||||
{
|
||||
"identity": "fluxer-native-publisher-215",
|
||||
"trackCount": 1,
|
||||
"tracks": [
|
||||
{
|
||||
"sid": "TR_VSt23d8AR7uRMx",
|
||||
"name": "screen",
|
||||
"kind": "video",
|
||||
"source": "screenshare",
|
||||
"mimeType": "video/H264",
|
||||
"muted": false
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"lastVideoMeta": {
|
||||
"participantSid": "PA_ywoDZo9MfjAs",
|
||||
"trackSid": "TR_VSt23d8AR7uRMx",
|
||||
"width": 3840,
|
||||
"height": 2160,
|
||||
"timestampUs": 247041331000
|
||||
},
|
||||
"publisherStats": {
|
||||
"rttMs": null,
|
||||
"outbound": [
|
||||
{
|
||||
"trackSid": "TR_VSt23d8AR7uRMx",
|
||||
"source": "screenshare",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 222,
|
||||
"packetsLost": 0,
|
||||
"fps": 52,
|
||||
"codec": "video/H264"
|
||||
}
|
||||
],
|
||||
"inbound": [],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 1,
|
||||
"outgoingVideoFramesProduced": 1000,
|
||||
"outgoingVideoFramesAccepted": 1000,
|
||||
"outgoingVideoFramesDropped": 87,
|
||||
"outgoingVideoFramesCoalesced": 87,
|
||||
"outgoingVideoFramesCaptured": 912,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 54.65,
|
||||
"outgoingVideoTargetFps": 60,
|
||||
"outgoingVideoMaxQueueAgeMs": 18,
|
||||
"outgoingVideoMaxPushLatencyMs": 19,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 0,
|
||||
"adaptiveSendTier": "full",
|
||||
"adaptiveSendReason": "adaptiveDisabled"
|
||||
}
|
||||
},
|
||||
"secondaryPublisherStats": null,
|
||||
"subscriberStats": {
|
||||
"rttMs": 1,
|
||||
"outbound": [],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_ywoDZo9MfjAs",
|
||||
"trackSid": "TR_VSt23d8AR7uRMx",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 221.7,
|
||||
"packetsLost": 8,
|
||||
"jitterMs": 4,
|
||||
"codec": "video/H264"
|
||||
}
|
||||
],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 0,
|
||||
"outgoingVideoFramesProduced": 0,
|
||||
"outgoingVideoFramesAccepted": 0,
|
||||
"outgoingVideoFramesDropped": 0,
|
||||
"outgoingVideoFramesCoalesced": 0,
|
||||
"outgoingVideoFramesCaptured": 0,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 0,
|
||||
"outgoingVideoTargetFps": 0,
|
||||
"outgoingVideoMaxQueueAgeMs": 0,
|
||||
"outgoingVideoMaxPushLatencyMs": 0,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 0,
|
||||
"adaptiveSendTier": "idle",
|
||||
"adaptiveSendReason": "notPublishing"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+290
@@ -0,0 +1,290 @@
|
||||
{
|
||||
"status": "fail",
|
||||
"startedAt": "2026-06-05T20:38:35.984Z",
|
||||
"endedAt": "2026-06-05T20:39:09.401Z",
|
||||
"platform": "darwin",
|
||||
"arch": "arm64",
|
||||
"config": {
|
||||
"url": "ws://127.0.0.1:17880",
|
||||
"serverApiUrl": "http://127.0.0.1:17880",
|
||||
"apiKey": "devkey",
|
||||
"room": "fluxer-webrtc-harness-99305-9b3ba47d-c306-44e8-93be-2f3f219d81d3",
|
||||
"externalTokens": false,
|
||||
"publisherIdentity": "fluxer-native-publisher-99305",
|
||||
"secondaryPublisherIdentity": "fluxer-native-publisher-2-99305",
|
||||
"subscriberIdentity": "fluxer-native-subscriber-99305",
|
||||
"required": true,
|
||||
"strict": true,
|
||||
"timeoutMs": 90000,
|
||||
"connectTimeoutMs": 30000,
|
||||
"disconnectTimeoutMs": 10000,
|
||||
"probeTimeoutMs": 1500,
|
||||
"durationMs": 30000,
|
||||
"width": 3840,
|
||||
"height": 2160,
|
||||
"expectedWidth": 3840,
|
||||
"expectedHeight": 2160,
|
||||
"fps": 60,
|
||||
"minFpsRatio": 0.8,
|
||||
"maxFrameGapMs": 250,
|
||||
"maxAudioFrameGapMs": 0,
|
||||
"maxAvDriftMs": 0,
|
||||
"maxPacketLoss": null,
|
||||
"requireStableResolution": true,
|
||||
"videoPattern": "fast",
|
||||
"videoInput": "nv12",
|
||||
"subscriberVideoQuality": "high",
|
||||
"screenCodecs": ["hevc"],
|
||||
"expectedScreenCodecs": ["hevc"],
|
||||
"codec": "hevc",
|
||||
"expectedScreenCodec": "video/H265",
|
||||
"secondaryPublisher": false,
|
||||
"secondaryPublisherCodec": "hevc",
|
||||
"secondaryPublisherCodecExplicit": false,
|
||||
"expectedSecondaryPublisherCodec": "video/H265",
|
||||
"expectedSecondaryPublisherCodecExplicit": false,
|
||||
"screenSimulcast": false,
|
||||
"secondaryPublisherScreenSimulcast": false,
|
||||
"adaptiveSend": true,
|
||||
"minVideoFps": 24,
|
||||
"minResolutionScale": 0.5,
|
||||
"maxAudioBufferMs": 750,
|
||||
"secondaryPublisherMicrophone": false,
|
||||
"secondaryPublisherScreenAudio": false,
|
||||
"maxBitrateBps": 80000000,
|
||||
"sampleRate": 48000,
|
||||
"channels": 1,
|
||||
"audioChunkMs": 20,
|
||||
"microphone": false,
|
||||
"screenAudio": false,
|
||||
"dataPacket": false,
|
||||
"subscriptionCycle": false,
|
||||
"validateServerPublishing": true,
|
||||
"camera": false,
|
||||
"cameraDeviceId": null,
|
||||
"expectedCameraCodec": null,
|
||||
"expectedHardwareEncoder": "videotoolbox",
|
||||
"reportPath": "/Users/hampus/Development/fluxer/fluxer_desktop/native-media-reports/mac-m3-ultra-livekit-4k60-h265-20260605T203835Z.json",
|
||||
"verbose": false,
|
||||
"scenarioName": "codec-hevc",
|
||||
"apiSecret": "<redacted>",
|
||||
"e2eeKey": null,
|
||||
"publisherToken": null,
|
||||
"secondaryPublisherToken": null,
|
||||
"subscriberToken": null
|
||||
},
|
||||
"checks": [
|
||||
{
|
||||
"name": "publisher connected",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber connected",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher local screenshare publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote screenshare subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video frames >= 3",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber video frame callback",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screenshare stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video stats count >= 1",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber video resolution 3840x2160",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screenshare codec video/H265",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video codec video/H265",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "hardware encoder backend videotoolbox",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "server publishing API participants listed",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "server sees publisher screenshare publication",
|
||||
"pass": true
|
||||
}
|
||||
],
|
||||
"skippedReason": null,
|
||||
"error": "received FPS 29.9 below 48",
|
||||
"hardwareEncoder": {
|
||||
"available": true,
|
||||
"backend": "videotoolbox",
|
||||
"compiled": true,
|
||||
"runtime": true,
|
||||
"codecs": ["h264", "h265"],
|
||||
"zeroCopy": false,
|
||||
"nativeInputs": [],
|
||||
"detail": "VideoToolbox can create hardware-accelerated compression sessions for h264, h265; supported hardware-codec probe set: h264, h265"
|
||||
},
|
||||
"metrics": {
|
||||
"inboundAudioFrames": 0,
|
||||
"inboundVideoFrames": 911,
|
||||
"strictAudioFrames": 0,
|
||||
"strictVideoFrames": 898,
|
||||
"videoCallbacks": 911,
|
||||
"videoBytes": 11334297600,
|
||||
"receivedFps": 29.9,
|
||||
"requiredFps": 48,
|
||||
"maxVideoFrameGapMs": 124,
|
||||
"maxAudioFrameGapMs": 0,
|
||||
"maxVideoFrameGapOverallMs": 124,
|
||||
"maxAudioFrameGapOverallMs": 0,
|
||||
"avDriftMs": null,
|
||||
"maxObservedPacketLoss": 4,
|
||||
"maxObservedPacketLossDelta": 4,
|
||||
"videoResolutionCounts": {
|
||||
"3840x2160": 898
|
||||
},
|
||||
"videoResolutionMismatchCount": 0,
|
||||
"droppedVideoFrameCallbacks": 0,
|
||||
"publisherVideoPump": {
|
||||
"input": "nv12",
|
||||
"pattern": "fast",
|
||||
"targetFps": 60,
|
||||
"startedAtMs": 1780691916459,
|
||||
"stoppedAtMs": null,
|
||||
"framesPushed": 1977,
|
||||
"framesRejected": 0,
|
||||
"errors": 0,
|
||||
"maxPushGapMs": 35,
|
||||
"lastPushAtMs": 1780691949392,
|
||||
"elapsedMs": 32950,
|
||||
"producedFps": 60
|
||||
},
|
||||
"secondaryPublisherVideoPump": null,
|
||||
"serverPublishing": {
|
||||
"fetchedAtMs": 1780691919120,
|
||||
"error": null,
|
||||
"participants": [
|
||||
{
|
||||
"identity": "fluxer-native-subscriber-99305",
|
||||
"trackCount": 0,
|
||||
"tracks": []
|
||||
},
|
||||
{
|
||||
"identity": "fluxer-native-publisher-99305",
|
||||
"trackCount": 1,
|
||||
"tracks": [
|
||||
{
|
||||
"sid": "TR_VSVHTFzX6KKP2d",
|
||||
"name": "screen",
|
||||
"kind": "video",
|
||||
"source": "screenshare",
|
||||
"mimeType": "video/H265",
|
||||
"muted": false
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"lastVideoMeta": {
|
||||
"participantSid": "PA_p6AhRM2ZweHm",
|
||||
"trackSid": "TR_VSVHTFzX6KKP2d",
|
||||
"width": 3840,
|
||||
"height": 2160,
|
||||
"timestampUs": 246795792000
|
||||
},
|
||||
"publisherStats": {
|
||||
"rttMs": 1,
|
||||
"outbound": [
|
||||
{
|
||||
"trackSid": "TR_VSVHTFzX6KKP2d",
|
||||
"source": "screenshare",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 80.1,
|
||||
"packetsLost": 0,
|
||||
"fps": 29,
|
||||
"codec": "video/H265"
|
||||
}
|
||||
],
|
||||
"inbound": [],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 1,
|
||||
"outgoingVideoFramesProduced": 1975,
|
||||
"outgoingVideoFramesAccepted": 1975,
|
||||
"outgoingVideoFramesDropped": 906,
|
||||
"outgoingVideoFramesCoalesced": 906,
|
||||
"outgoingVideoFramesCaptured": 1068,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 32.44,
|
||||
"outgoingVideoTargetFps": 30,
|
||||
"outgoingVideoMaxQueueAgeMs": 18,
|
||||
"outgoingVideoMaxPushLatencyMs": 18,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 0,
|
||||
"adaptiveSendTier": "fps30",
|
||||
"adaptiveSendReason": "stable"
|
||||
}
|
||||
},
|
||||
"secondaryPublisherStats": null,
|
||||
"subscriberStats": {
|
||||
"rttMs": 1,
|
||||
"outbound": [],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_p6AhRM2ZweHm",
|
||||
"trackSid": "TR_VSVHTFzX6KKP2d",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 83,
|
||||
"packetsLost": 4,
|
||||
"jitterMs": 2,
|
||||
"codec": "video/H265"
|
||||
}
|
||||
],
|
||||
"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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+290
@@ -0,0 +1,290 @@
|
||||
{
|
||||
"status": "fail",
|
||||
"startedAt": "2026-06-05T20:40:48.428Z",
|
||||
"endedAt": "2026-06-05T20:41:21.891Z",
|
||||
"platform": "darwin",
|
||||
"arch": "arm64",
|
||||
"config": {
|
||||
"url": "ws://127.0.0.1:17880",
|
||||
"serverApiUrl": "http://127.0.0.1:17880",
|
||||
"apiKey": "devkey",
|
||||
"room": "fluxer-webrtc-harness-99799-9b73c5f8-24ee-46a6-b641-2268cab488bf",
|
||||
"externalTokens": false,
|
||||
"publisherIdentity": "fluxer-native-publisher-99799",
|
||||
"secondaryPublisherIdentity": "fluxer-native-publisher-2-99799",
|
||||
"subscriberIdentity": "fluxer-native-subscriber-99799",
|
||||
"required": true,
|
||||
"strict": true,
|
||||
"timeoutMs": 90000,
|
||||
"connectTimeoutMs": 30000,
|
||||
"disconnectTimeoutMs": 10000,
|
||||
"probeTimeoutMs": 1500,
|
||||
"durationMs": 30000,
|
||||
"width": 3840,
|
||||
"height": 2160,
|
||||
"expectedWidth": 3840,
|
||||
"expectedHeight": 2160,
|
||||
"fps": 60,
|
||||
"minFpsRatio": 0.8,
|
||||
"maxFrameGapMs": 250,
|
||||
"maxAudioFrameGapMs": 0,
|
||||
"maxAvDriftMs": 0,
|
||||
"maxPacketLoss": null,
|
||||
"requireStableResolution": true,
|
||||
"videoPattern": "fast",
|
||||
"videoInput": "nv12",
|
||||
"subscriberVideoQuality": "high",
|
||||
"screenCodecs": ["hevc"],
|
||||
"expectedScreenCodecs": ["hevc"],
|
||||
"codec": "hevc",
|
||||
"expectedScreenCodec": "video/H265",
|
||||
"secondaryPublisher": false,
|
||||
"secondaryPublisherCodec": "hevc",
|
||||
"secondaryPublisherCodecExplicit": false,
|
||||
"expectedSecondaryPublisherCodec": "video/H265",
|
||||
"expectedSecondaryPublisherCodecExplicit": false,
|
||||
"screenSimulcast": false,
|
||||
"secondaryPublisherScreenSimulcast": false,
|
||||
"adaptiveSend": false,
|
||||
"minVideoFps": 24,
|
||||
"minResolutionScale": 0.5,
|
||||
"maxAudioBufferMs": 750,
|
||||
"secondaryPublisherMicrophone": false,
|
||||
"secondaryPublisherScreenAudio": false,
|
||||
"maxBitrateBps": 80000000,
|
||||
"sampleRate": 48000,
|
||||
"channels": 1,
|
||||
"audioChunkMs": 20,
|
||||
"microphone": false,
|
||||
"screenAudio": false,
|
||||
"dataPacket": false,
|
||||
"subscriptionCycle": false,
|
||||
"validateServerPublishing": true,
|
||||
"camera": false,
|
||||
"cameraDeviceId": null,
|
||||
"expectedCameraCodec": null,
|
||||
"expectedHardwareEncoder": "videotoolbox",
|
||||
"reportPath": "/Users/hampus/Development/fluxer/fluxer_desktop/native-media-reports/mac-m3-ultra-livekit-4k60-h265-noadaptive-20260605T204048Z.json",
|
||||
"verbose": false,
|
||||
"scenarioName": "codec-hevc",
|
||||
"apiSecret": "<redacted>",
|
||||
"e2eeKey": null,
|
||||
"publisherToken": null,
|
||||
"secondaryPublisherToken": null,
|
||||
"subscriberToken": null
|
||||
},
|
||||
"checks": [
|
||||
{
|
||||
"name": "publisher connected",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber connected",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher local screenshare publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote screenshare subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video frames >= 3",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber video frame callback",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screenshare stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video stats count >= 1",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber video resolution 3840x2160",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screenshare codec video/H265",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video codec video/H265",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "hardware encoder backend videotoolbox",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "server publishing API participants listed",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "server sees publisher screenshare publication",
|
||||
"pass": true
|
||||
}
|
||||
],
|
||||
"skippedReason": null,
|
||||
"error": "received FPS 47.42 below 48",
|
||||
"hardwareEncoder": {
|
||||
"available": true,
|
||||
"backend": "videotoolbox",
|
||||
"compiled": true,
|
||||
"runtime": true,
|
||||
"codecs": ["h264", "h265"],
|
||||
"zeroCopy": false,
|
||||
"nativeInputs": [],
|
||||
"detail": "VideoToolbox can create hardware-accelerated compression sessions for h264, h265; supported hardware-codec probe set: h264, h265"
|
||||
},
|
||||
"metrics": {
|
||||
"inboundAudioFrames": 0,
|
||||
"inboundVideoFrames": 1439,
|
||||
"strictAudioFrames": 0,
|
||||
"strictVideoFrames": 1424,
|
||||
"videoCallbacks": 1438,
|
||||
"videoBytes": 17891020800,
|
||||
"receivedFps": 47.42,
|
||||
"requiredFps": 48,
|
||||
"maxVideoFrameGapMs": 119,
|
||||
"maxAudioFrameGapMs": 0,
|
||||
"maxVideoFrameGapOverallMs": 119,
|
||||
"maxAudioFrameGapOverallMs": 0,
|
||||
"avDriftMs": null,
|
||||
"maxObservedPacketLoss": 4,
|
||||
"maxObservedPacketLossDelta": 4,
|
||||
"videoResolutionCounts": {
|
||||
"3840x2160": 1424
|
||||
},
|
||||
"videoResolutionMismatchCount": 0,
|
||||
"droppedVideoFrameCallbacks": 0,
|
||||
"publisherVideoPump": {
|
||||
"input": "nv12",
|
||||
"pattern": "fast",
|
||||
"targetFps": 60,
|
||||
"startedAtMs": 1780692048955,
|
||||
"stoppedAtMs": null,
|
||||
"framesPushed": 1977,
|
||||
"framesRejected": 0,
|
||||
"errors": 0,
|
||||
"maxPushGapMs": 27,
|
||||
"lastPushAtMs": 1780692081889,
|
||||
"elapsedMs": 32944,
|
||||
"producedFps": 60.01
|
||||
},
|
||||
"secondaryPublisherVideoPump": null,
|
||||
"serverPublishing": {
|
||||
"fetchedAtMs": 1780692051599,
|
||||
"error": null,
|
||||
"participants": [
|
||||
{
|
||||
"identity": "fluxer-native-publisher-99799",
|
||||
"trackCount": 1,
|
||||
"tracks": [
|
||||
{
|
||||
"sid": "TR_VS7whvguuwE7Ep",
|
||||
"name": "screen",
|
||||
"kind": "video",
|
||||
"source": "screenshare",
|
||||
"mimeType": "video/H265",
|
||||
"muted": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"identity": "fluxer-native-subscriber-99799",
|
||||
"trackCount": 0,
|
||||
"tracks": []
|
||||
}
|
||||
]
|
||||
},
|
||||
"lastVideoMeta": {
|
||||
"participantSid": "PA_6qPYCyPtKNMy",
|
||||
"trackSid": "TR_VS7whvguuwE7Ep",
|
||||
"width": 3840,
|
||||
"height": 2160,
|
||||
"timestampUs": 246928279000
|
||||
},
|
||||
"publisherStats": {
|
||||
"rttMs": 1,
|
||||
"outbound": [
|
||||
{
|
||||
"trackSid": "TR_VS7whvguuwE7Ep",
|
||||
"source": "screenshare",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 132.9,
|
||||
"packetsLost": 0,
|
||||
"fps": 47,
|
||||
"codec": "video/H265"
|
||||
}
|
||||
],
|
||||
"inbound": [],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 0,
|
||||
"outgoingVideoFramesProduced": 1971,
|
||||
"outgoingVideoFramesAccepted": 1971,
|
||||
"outgoingVideoFramesDropped": 169,
|
||||
"outgoingVideoFramesCoalesced": 169,
|
||||
"outgoingVideoFramesCaptured": 1802,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 54.85,
|
||||
"outgoingVideoTargetFps": 60,
|
||||
"outgoingVideoMaxQueueAgeMs": 18,
|
||||
"outgoingVideoMaxPushLatencyMs": 18,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 0,
|
||||
"adaptiveSendTier": "full",
|
||||
"adaptiveSendReason": "adaptiveDisabled"
|
||||
}
|
||||
},
|
||||
"secondaryPublisherStats": null,
|
||||
"subscriberStats": {
|
||||
"rttMs": 1,
|
||||
"outbound": [],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_6qPYCyPtKNMy",
|
||||
"trackSid": "TR_VS7whvguuwE7Ep",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 135.8,
|
||||
"packetsLost": 4,
|
||||
"jitterMs": 6,
|
||||
"codec": "video/H265"
|
||||
}
|
||||
],
|
||||
"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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+290
@@ -0,0 +1,290 @@
|
||||
{
|
||||
"status": "pass",
|
||||
"startedAt": "2026-06-05T20:42:06.035Z",
|
||||
"endedAt": "2026-06-05T20:42:22.648Z",
|
||||
"platform": "darwin",
|
||||
"arch": "arm64",
|
||||
"config": {
|
||||
"url": "ws://127.0.0.1:17880",
|
||||
"serverApiUrl": "http://127.0.0.1:17880",
|
||||
"apiKey": "devkey",
|
||||
"room": "fluxer-webrtc-harness-99996-9f3eea01-c794-44e7-a66d-a39e3b06f591",
|
||||
"externalTokens": false,
|
||||
"publisherIdentity": "fluxer-native-publisher-99996",
|
||||
"secondaryPublisherIdentity": "fluxer-native-publisher-2-99996",
|
||||
"subscriberIdentity": "fluxer-native-subscriber-99996",
|
||||
"required": true,
|
||||
"strict": true,
|
||||
"timeoutMs": 90000,
|
||||
"connectTimeoutMs": 30000,
|
||||
"disconnectTimeoutMs": 10000,
|
||||
"probeTimeoutMs": 1500,
|
||||
"durationMs": 15000,
|
||||
"width": 3840,
|
||||
"height": 2160,
|
||||
"expectedWidth": 3840,
|
||||
"expectedHeight": 2160,
|
||||
"fps": 60,
|
||||
"minFpsRatio": 0.8,
|
||||
"maxFrameGapMs": 250,
|
||||
"maxAudioFrameGapMs": 0,
|
||||
"maxAvDriftMs": 0,
|
||||
"maxPacketLoss": null,
|
||||
"requireStableResolution": true,
|
||||
"videoPattern": "fast",
|
||||
"videoInput": "nv12",
|
||||
"subscriberVideoQuality": "high",
|
||||
"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": false,
|
||||
"minVideoFps": 24,
|
||||
"minResolutionScale": 0.5,
|
||||
"maxAudioBufferMs": 750,
|
||||
"secondaryPublisherMicrophone": false,
|
||||
"secondaryPublisherScreenAudio": false,
|
||||
"maxBitrateBps": 80000000,
|
||||
"sampleRate": 48000,
|
||||
"channels": 1,
|
||||
"audioChunkMs": 20,
|
||||
"microphone": false,
|
||||
"screenAudio": false,
|
||||
"dataPacket": false,
|
||||
"subscriptionCycle": false,
|
||||
"validateServerPublishing": true,
|
||||
"camera": false,
|
||||
"cameraDeviceId": null,
|
||||
"expectedCameraCodec": null,
|
||||
"expectedHardwareEncoder": "videotoolbox",
|
||||
"reportPath": "/Users/hampus/Development/fluxer/fluxer_desktop/native-media-reports/mac-m3-ultra-livekit-4k60-vp8-noadaptive-20260605T204205Z.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 3840x2160",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screenshare codec video/VP8",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video codec video/VP8",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "hardware encoder backend videotoolbox",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "server publishing API participants listed",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "server sees publisher screenshare publication",
|
||||
"pass": true
|
||||
}
|
||||
],
|
||||
"skippedReason": null,
|
||||
"error": null,
|
||||
"hardwareEncoder": {
|
||||
"available": true,
|
||||
"backend": "videotoolbox",
|
||||
"compiled": true,
|
||||
"runtime": true,
|
||||
"codecs": ["h264", "h265"],
|
||||
"zeroCopy": false,
|
||||
"nativeInputs": [],
|
||||
"detail": "VideoToolbox can create hardware-accelerated compression sessions for h264, h265; supported hardware-codec probe set: h264, h265"
|
||||
},
|
||||
"metrics": {
|
||||
"inboundAudioFrames": 0,
|
||||
"inboundVideoFrames": 835,
|
||||
"strictAudioFrames": 0,
|
||||
"strictVideoFrames": 829,
|
||||
"videoCallbacks": 835,
|
||||
"videoBytes": 10388736000,
|
||||
"receivedFps": 55.21,
|
||||
"requiredFps": 48,
|
||||
"maxVideoFrameGapMs": 138,
|
||||
"maxAudioFrameGapMs": 0,
|
||||
"maxVideoFrameGapOverallMs": 138,
|
||||
"maxAudioFrameGapOverallMs": 0,
|
||||
"avDriftMs": null,
|
||||
"maxObservedPacketLoss": 18,
|
||||
"maxObservedPacketLossDelta": 17,
|
||||
"videoResolutionCounts": {
|
||||
"3840x2160": 829
|
||||
},
|
||||
"videoResolutionMismatchCount": 0,
|
||||
"droppedVideoFrameCallbacks": 0,
|
||||
"publisherVideoPump": {
|
||||
"input": "nv12",
|
||||
"pattern": "fast",
|
||||
"targetFps": 60,
|
||||
"startedAtMs": 1780692126456,
|
||||
"stoppedAtMs": null,
|
||||
"framesPushed": 966,
|
||||
"framesRejected": 0,
|
||||
"errors": 0,
|
||||
"maxPushGapMs": 28,
|
||||
"lastPushAtMs": 1780692142632,
|
||||
"elapsedMs": 16199,
|
||||
"producedFps": 59.63
|
||||
},
|
||||
"secondaryPublisherVideoPump": null,
|
||||
"serverPublishing": {
|
||||
"fetchedAtMs": 1780692127628,
|
||||
"error": null,
|
||||
"participants": [
|
||||
{
|
||||
"identity": "fluxer-native-publisher-99996",
|
||||
"trackCount": 1,
|
||||
"tracks": [
|
||||
{
|
||||
"sid": "TR_VSgayVkGgydiPJ",
|
||||
"name": "screen",
|
||||
"kind": "video",
|
||||
"source": "screenshare",
|
||||
"mimeType": "video/VP8",
|
||||
"muted": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"identity": "fluxer-native-subscriber-99996",
|
||||
"trackCount": 0,
|
||||
"tracks": []
|
||||
}
|
||||
]
|
||||
},
|
||||
"lastVideoMeta": {
|
||||
"participantSid": "PA_CRYMSnWyNXJJ",
|
||||
"trackSid": "TR_VSgayVkGgydiPJ",
|
||||
"width": 3840,
|
||||
"height": 2160,
|
||||
"timestampUs": 246989049000
|
||||
},
|
||||
"publisherStats": {
|
||||
"rttMs": null,
|
||||
"outbound": [
|
||||
{
|
||||
"trackSid": "TR_VSgayVkGgydiPJ",
|
||||
"source": "screenshare",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 347.3,
|
||||
"packetsLost": 0,
|
||||
"fps": 55,
|
||||
"codec": "video/VP8"
|
||||
}
|
||||
],
|
||||
"inbound": [],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 0,
|
||||
"outgoingVideoFramesProduced": 952,
|
||||
"outgoingVideoFramesAccepted": 952,
|
||||
"outgoingVideoFramesDropped": 83,
|
||||
"outgoingVideoFramesCoalesced": 83,
|
||||
"outgoingVideoFramesCaptured": 869,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 54.77,
|
||||
"outgoingVideoTargetFps": 60,
|
||||
"outgoingVideoMaxQueueAgeMs": 18,
|
||||
"outgoingVideoMaxPushLatencyMs": 18,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 0,
|
||||
"adaptiveSendTier": "full",
|
||||
"adaptiveSendReason": "adaptiveDisabled"
|
||||
}
|
||||
},
|
||||
"secondaryPublisherStats": null,
|
||||
"subscriberStats": {
|
||||
"rttMs": 1,
|
||||
"outbound": [],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_CRYMSnWyNXJJ",
|
||||
"trackSid": "TR_VSgayVkGgydiPJ",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 347.9,
|
||||
"packetsLost": 18,
|
||||
"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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+290
@@ -0,0 +1,290 @@
|
||||
{
|
||||
"status": "pass",
|
||||
"startedAt": "2026-06-05T20:57:47.344Z",
|
||||
"endedAt": "2026-06-05T20:58:04.558Z",
|
||||
"platform": "darwin",
|
||||
"arch": "arm64",
|
||||
"config": {
|
||||
"url": "ws://100.79.83.54:17880",
|
||||
"serverApiUrl": "http://100.79.83.54:17880",
|
||||
"apiKey": "devkey",
|
||||
"room": "fluxer-webrtc-harness-1177-7a01a114-afdb-422c-ac68-dd6da5106b46",
|
||||
"externalTokens": false,
|
||||
"publisherIdentity": "fluxer-native-publisher-1177",
|
||||
"secondaryPublisherIdentity": "fluxer-native-publisher-2-1177",
|
||||
"subscriberIdentity": "fluxer-native-subscriber-1177",
|
||||
"required": true,
|
||||
"strict": true,
|
||||
"timeoutMs": 90000,
|
||||
"connectTimeoutMs": 30000,
|
||||
"disconnectTimeoutMs": 10000,
|
||||
"probeTimeoutMs": 1500,
|
||||
"durationMs": 15000,
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"expectedWidth": 1280,
|
||||
"expectedHeight": 720,
|
||||
"fps": 30,
|
||||
"minFpsRatio": 0.9,
|
||||
"maxFrameGapMs": 250,
|
||||
"maxAudioFrameGapMs": 0,
|
||||
"maxAvDriftMs": 0,
|
||||
"maxPacketLoss": null,
|
||||
"requireStableResolution": true,
|
||||
"videoPattern": "fast",
|
||||
"videoInput": "nv12",
|
||||
"subscriberVideoQuality": "high",
|
||||
"screenCodecs": ["hevc"],
|
||||
"expectedScreenCodecs": ["hevc"],
|
||||
"codec": "hevc",
|
||||
"expectedScreenCodec": "video/H265",
|
||||
"secondaryPublisher": false,
|
||||
"secondaryPublisherCodec": "hevc",
|
||||
"secondaryPublisherCodecExplicit": false,
|
||||
"expectedSecondaryPublisherCodec": "video/H265",
|
||||
"expectedSecondaryPublisherCodecExplicit": false,
|
||||
"screenSimulcast": false,
|
||||
"secondaryPublisherScreenSimulcast": false,
|
||||
"adaptiveSend": true,
|
||||
"minVideoFps": 15,
|
||||
"minResolutionScale": 0.5,
|
||||
"maxAudioBufferMs": 750,
|
||||
"secondaryPublisherMicrophone": false,
|
||||
"secondaryPublisherScreenAudio": false,
|
||||
"maxBitrateBps": 400000,
|
||||
"sampleRate": 48000,
|
||||
"channels": 1,
|
||||
"audioChunkMs": 20,
|
||||
"microphone": false,
|
||||
"screenAudio": false,
|
||||
"dataPacket": false,
|
||||
"subscriptionCycle": false,
|
||||
"validateServerPublishing": true,
|
||||
"camera": false,
|
||||
"cameraDeviceId": null,
|
||||
"expectedCameraCodec": null,
|
||||
"expectedHardwareEncoder": "videotoolbox",
|
||||
"reportPath": "/Users/hampus/Development/fluxer/fluxer_desktop/native-media-reports/mac-m3-ultra-livekit-720p-hevc-after-guard-20260605T205747Z.json",
|
||||
"verbose": false,
|
||||
"scenarioName": "codec-hevc",
|
||||
"apiSecret": "<redacted>",
|
||||
"e2eeKey": null,
|
||||
"publisherToken": null,
|
||||
"secondaryPublisherToken": null,
|
||||
"subscriberToken": null
|
||||
},
|
||||
"checks": [
|
||||
{
|
||||
"name": "publisher connected",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber connected",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher local screenshare publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote screenshare subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video frames >= 3",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber video frame callback",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screenshare stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video stats count >= 1",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber video resolution 1280x720",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screenshare codec video/H265",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video codec video/H265",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "hardware encoder backend videotoolbox",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "server publishing API participants listed",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "server sees publisher screenshare publication",
|
||||
"pass": true
|
||||
}
|
||||
],
|
||||
"skippedReason": null,
|
||||
"error": null,
|
||||
"hardwareEncoder": {
|
||||
"available": true,
|
||||
"backend": "videotoolbox",
|
||||
"compiled": true,
|
||||
"runtime": true,
|
||||
"codecs": ["h264", "h265"],
|
||||
"zeroCopy": false,
|
||||
"nativeInputs": [],
|
||||
"detail": "VideoToolbox can create hardware-accelerated compression sessions for h264, h265; supported hardware-codec probe set: h264, h265"
|
||||
},
|
||||
"metrics": {
|
||||
"inboundAudioFrames": 0,
|
||||
"inboundVideoFrames": 424,
|
||||
"strictAudioFrames": 0,
|
||||
"strictVideoFrames": 420,
|
||||
"videoCallbacks": 423,
|
||||
"videoBytes": 584755200,
|
||||
"receivedFps": 28.28,
|
||||
"requiredFps": 27,
|
||||
"maxVideoFrameGapMs": 132,
|
||||
"maxAudioFrameGapMs": 0,
|
||||
"maxVideoFrameGapOverallMs": 500,
|
||||
"maxAudioFrameGapOverallMs": 0,
|
||||
"avDriftMs": null,
|
||||
"maxObservedPacketLoss": 0,
|
||||
"maxObservedPacketLossDelta": 0,
|
||||
"videoResolutionCounts": {
|
||||
"1280x720": 420
|
||||
},
|
||||
"videoResolutionMismatchCount": 0,
|
||||
"droppedVideoFrameCallbacks": 0,
|
||||
"publisherVideoPump": {
|
||||
"input": "nv12",
|
||||
"pattern": "fast",
|
||||
"targetFps": 30,
|
||||
"startedAtMs": 1780693067890,
|
||||
"stoppedAtMs": null,
|
||||
"framesPushed": 501,
|
||||
"framesRejected": 0,
|
||||
"errors": 0,
|
||||
"maxPushGapMs": 55,
|
||||
"lastPushAtMs": 1780693084557,
|
||||
"elapsedMs": 16678,
|
||||
"producedFps": 30.04
|
||||
},
|
||||
"secondaryPublisherVideoPump": null,
|
||||
"serverPublishing": {
|
||||
"fetchedAtMs": 1780693069535,
|
||||
"error": null,
|
||||
"participants": [
|
||||
{
|
||||
"identity": "fluxer-native-subscriber-1177",
|
||||
"trackCount": 0,
|
||||
"tracks": []
|
||||
},
|
||||
{
|
||||
"identity": "fluxer-native-publisher-1177",
|
||||
"trackCount": 1,
|
||||
"tracks": [
|
||||
{
|
||||
"sid": "TR_VScM2KL4qqaVMf",
|
||||
"name": "screen",
|
||||
"kind": "video",
|
||||
"source": "screenshare",
|
||||
"mimeType": "video/H265",
|
||||
"muted": false
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"lastVideoMeta": {
|
||||
"participantSid": "PA_CEoLG8a8qXZr",
|
||||
"trackSid": "TR_VScM2KL4qqaVMf",
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"timestampUs": 247930927000
|
||||
},
|
||||
"publisherStats": {
|
||||
"rttMs": 1,
|
||||
"outbound": [
|
||||
{
|
||||
"trackSid": "TR_VScM2KL4qqaVMf",
|
||||
"source": "screenshare",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 31.2,
|
||||
"packetsLost": 0,
|
||||
"fps": 28,
|
||||
"codec": "video/H265"
|
||||
}
|
||||
],
|
||||
"inbound": [],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 0,
|
||||
"outgoingVideoFramesProduced": 477,
|
||||
"outgoingVideoFramesAccepted": 477,
|
||||
"outgoingVideoFramesDropped": 23,
|
||||
"outgoingVideoFramesCoalesced": 23,
|
||||
"outgoingVideoFramesCaptured": 454,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 28.53,
|
||||
"outgoingVideoTargetFps": 30,
|
||||
"outgoingVideoMaxQueueAgeMs": 34,
|
||||
"outgoingVideoMaxPushLatencyMs": 34,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 0,
|
||||
"adaptiveSendTier": "full",
|
||||
"adaptiveSendReason": "stable"
|
||||
}
|
||||
},
|
||||
"secondaryPublisherStats": null,
|
||||
"subscriberStats": {
|
||||
"rttMs": 1,
|
||||
"outbound": [],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_CEoLG8a8qXZr",
|
||||
"trackSid": "TR_VScM2KL4qqaVMf",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 31.2,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 3,
|
||||
"codec": "video/H265"
|
||||
}
|
||||
],
|
||||
"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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+636
@@ -0,0 +1,636 @@
|
||||
{
|
||||
"status": "pass",
|
||||
"startedAt": "2026-06-05T20:43:38.058Z",
|
||||
"endedAt": "2026-06-05T20:44:00.477Z",
|
||||
"platform": "darwin",
|
||||
"arch": "arm64",
|
||||
"config": {
|
||||
"url": "ws://127.0.0.1:17880",
|
||||
"serverApiUrl": "http://127.0.0.1:17880",
|
||||
"apiKey": "devkey",
|
||||
"room": "fluxer-webrtc-harness-287-d177ae47-231a-4e5f-8b33-e21435c1d78c",
|
||||
"externalTokens": false,
|
||||
"publisherIdentity": "fluxer-native-publisher-287",
|
||||
"secondaryPublisherIdentity": "fluxer-native-publisher-2-287",
|
||||
"subscriberIdentity": "fluxer-native-subscriber-287",
|
||||
"required": true,
|
||||
"strict": true,
|
||||
"timeoutMs": 90000,
|
||||
"connectTimeoutMs": 30000,
|
||||
"disconnectTimeoutMs": 10000,
|
||||
"probeTimeoutMs": 1500,
|
||||
"durationMs": 20000,
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"expectedWidth": 1280,
|
||||
"expectedHeight": 720,
|
||||
"fps": 30,
|
||||
"minFpsRatio": 0.9,
|
||||
"maxFrameGapMs": 250,
|
||||
"maxAudioFrameGapMs": 250,
|
||||
"maxAvDriftMs": 120,
|
||||
"maxPacketLoss": null,
|
||||
"requireStableResolution": true,
|
||||
"videoPattern": "fast",
|
||||
"videoInput": "nv12",
|
||||
"subscriberVideoQuality": "high",
|
||||
"screenCodecs": ["h264"],
|
||||
"expectedScreenCodecs": ["h264"],
|
||||
"codec": "h264",
|
||||
"expectedScreenCodec": "video/H264",
|
||||
"secondaryPublisher": true,
|
||||
"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": 400000,
|
||||
"sampleRate": 48000,
|
||||
"channels": 1,
|
||||
"audioChunkMs": 20,
|
||||
"microphone": true,
|
||||
"screenAudio": true,
|
||||
"dataPacket": true,
|
||||
"subscriptionCycle": false,
|
||||
"validateServerPublishing": true,
|
||||
"camera": false,
|
||||
"cameraDeviceId": null,
|
||||
"expectedCameraCodec": null,
|
||||
"expectedHardwareEncoder": null,
|
||||
"reportPath": "/Users/hampus/Development/fluxer/fluxer_desktop/native-media-reports/mac-m3-ultra-livekit-alltracks-serverpub-20260605T204337Z.json",
|
||||
"verbose": false,
|
||||
"scenarioName": "codec-h264-with-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 >= 6",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber video frame callback",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screenshare stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video stats count >= 2",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber video resolution 1280x720",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber aggregate inbound audio frames >= 12",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio stats count >= 4",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher local microphone publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote microphone subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio frames >= 12",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound microphone stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher local screen-share audio publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote screen-share audio subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screen-share audio stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher connected",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher local screenshare publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote secondary screenshare subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher outbound screenshare stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher outbound screenshare codec video/H264",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound secondary codec video/H264",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher local microphone publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote secondary microphone subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher outbound microphone stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher local screen-share audio publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote secondary screen-share audio subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher outbound screen-share audio stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber data packet received",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber secondary data packet received",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screenshare codec video/H264",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video codec video/H264",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "server publishing API participants listed",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "server sees publisher screenshare publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "server sees publisher microphone publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "server sees publisher screen-share audio publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "server sees secondary publisher screenshare publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "server sees secondary publisher microphone publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "server sees secondary publisher screen-share audio publication",
|
||||
"pass": true
|
||||
}
|
||||
],
|
||||
"skippedReason": null,
|
||||
"error": null,
|
||||
"hardwareEncoder": {
|
||||
"available": true,
|
||||
"backend": "videotoolbox",
|
||||
"compiled": true,
|
||||
"runtime": true,
|
||||
"codecs": ["h264", "h265"],
|
||||
"zeroCopy": false,
|
||||
"nativeInputs": [],
|
||||
"detail": "VideoToolbox can create hardware-accelerated compression sessions for h264, h265; supported hardware-codec probe set: h264, h265"
|
||||
},
|
||||
"metrics": {
|
||||
"inboundAudioFrames": 8688,
|
||||
"inboundVideoFrames": 1105,
|
||||
"strictAudioFrames": 200,
|
||||
"strictVideoFrames": 1096,
|
||||
"videoCallbacks": 1105,
|
||||
"videoBytes": 1527552000,
|
||||
"receivedFps": 55.07,
|
||||
"requiredFps": 27,
|
||||
"maxVideoFrameGapMs": 137,
|
||||
"maxAudioFrameGapMs": 102,
|
||||
"maxVideoFrameGapOverallMs": 278,
|
||||
"maxAudioFrameGapOverallMs": 102,
|
||||
"avDriftMs": 16,
|
||||
"maxObservedPacketLoss": 193,
|
||||
"maxObservedPacketLossDelta": 181,
|
||||
"videoResolutionCounts": {
|
||||
"1280x720": 1096
|
||||
},
|
||||
"videoResolutionMismatchCount": 0,
|
||||
"droppedVideoFrameCallbacks": 0,
|
||||
"publisherVideoPump": {
|
||||
"input": "nv12",
|
||||
"pattern": "fast",
|
||||
"targetFps": 30,
|
||||
"startedAtMs": 1780692218670,
|
||||
"stoppedAtMs": null,
|
||||
"framesPushed": 655,
|
||||
"framesRejected": 0,
|
||||
"errors": 0,
|
||||
"maxPushGapMs": 35,
|
||||
"lastPushAtMs": 1780692240471,
|
||||
"elapsedMs": 21825,
|
||||
"producedFps": 30.01
|
||||
},
|
||||
"secondaryPublisherVideoPump": {
|
||||
"input": "nv12",
|
||||
"pattern": "fast",
|
||||
"targetFps": 30,
|
||||
"startedAtMs": 1780692218671,
|
||||
"stoppedAtMs": null,
|
||||
"framesPushed": 655,
|
||||
"framesRejected": 0,
|
||||
"errors": 0,
|
||||
"maxPushGapMs": 35,
|
||||
"lastPushAtMs": 1780692240471,
|
||||
"elapsedMs": 21824,
|
||||
"producedFps": 30.01
|
||||
},
|
||||
"serverPublishing": {
|
||||
"fetchedAtMs": 1780692220222,
|
||||
"error": null,
|
||||
"participants": [
|
||||
{
|
||||
"identity": "fluxer-native-publisher-287",
|
||||
"trackCount": 3,
|
||||
"tracks": [
|
||||
{
|
||||
"sid": "TR_AMQmi9tr3ijwD7",
|
||||
"name": "mic",
|
||||
"kind": "audio",
|
||||
"source": "microphone",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_AsVx6mXCeyrqVB",
|
||||
"name": "screen-audio",
|
||||
"kind": "audio",
|
||||
"source": "screenshareAudio",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_VSjjPS7DRgdqSi",
|
||||
"name": "screen",
|
||||
"kind": "video",
|
||||
"source": "screenshare",
|
||||
"mimeType": "video/H264",
|
||||
"muted": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"identity": "fluxer-native-subscriber-287",
|
||||
"trackCount": 0,
|
||||
"tracks": []
|
||||
},
|
||||
{
|
||||
"identity": "fluxer-native-publisher-2-287",
|
||||
"trackCount": 3,
|
||||
"tracks": [
|
||||
{
|
||||
"sid": "TR_VSVinYCWjRrXgb",
|
||||
"name": "screen",
|
||||
"kind": "video",
|
||||
"source": "screenshare",
|
||||
"mimeType": "video/H264",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_AMd395vNaQvHas",
|
||||
"name": "mic",
|
||||
"kind": "audio",
|
||||
"source": "microphone",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_AsSinL94mqRm57",
|
||||
"name": "screen-audio",
|
||||
"kind": "audio",
|
||||
"source": "screenshareAudio",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"lastVideoMeta": {
|
||||
"participantSid": "PA_cdeic4ojSyhV",
|
||||
"trackSid": "TR_VSVinYCWjRrXgb",
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"timestampUs": 247086842000
|
||||
},
|
||||
"publisherStats": {
|
||||
"rttMs": 1,
|
||||
"outbound": [
|
||||
{
|
||||
"trackSid": "TR_AsVx6mXCeyrqVB",
|
||||
"source": "screenshareAudio",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 263.9,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_AMQmi9tr3ijwD7",
|
||||
"source": "microphone",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 98.7,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_VSjjPS7DRgdqSi",
|
||||
"source": "screenshare",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 38.3,
|
||||
"packetsLost": 0,
|
||||
"fps": 28,
|
||||
"codec": "video/H264"
|
||||
}
|
||||
],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_cdeic4ojSyhV",
|
||||
"trackSid": "TR_AsSinL94mqRm57",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 242.9,
|
||||
"packetsLost": 78,
|
||||
"jitterMs": 0,
|
||||
"audioLevel": 0.319,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_cdeic4ojSyhV",
|
||||
"trackSid": "TR_VSVinYCWjRrXgb",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 39,
|
||||
"packetsLost": 15,
|
||||
"jitterMs": 2,
|
||||
"codec": "video/H264"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_cdeic4ojSyhV",
|
||||
"trackSid": "TR_AMd395vNaQvHas",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 92.8,
|
||||
"packetsLost": 86,
|
||||
"jitterMs": 0,
|
||||
"audioLevel": 0.307,
|
||||
"codec": "audio/opus"
|
||||
}
|
||||
],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 1,
|
||||
"outgoingVideoFramesProduced": 651,
|
||||
"outgoingVideoFramesAccepted": 651,
|
||||
"outgoingVideoFramesDropped": 27,
|
||||
"outgoingVideoFramesCoalesced": 27,
|
||||
"outgoingVideoFramesCaptured": 623,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 28.71,
|
||||
"outgoingVideoTargetFps": 30,
|
||||
"outgoingVideoMaxQueueAgeMs": 34,
|
||||
"outgoingVideoMaxPushLatencyMs": 34,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 32,
|
||||
"adaptiveSendTier": "full",
|
||||
"adaptiveSendReason": "stable"
|
||||
}
|
||||
},
|
||||
"secondaryPublisherStats": {
|
||||
"rttMs": null,
|
||||
"outbound": [
|
||||
{
|
||||
"trackSid": "TR_AsSinL94mqRm57",
|
||||
"source": "screenshareAudio",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 257.9,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_AMd395vNaQvHas",
|
||||
"source": "microphone",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 97.6,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_VSVinYCWjRrXgb",
|
||||
"source": "screenshare",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 40.3,
|
||||
"packetsLost": 0,
|
||||
"fps": 29,
|
||||
"codec": "video/H264"
|
||||
}
|
||||
],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_ecrQddbJEyhw",
|
||||
"trackSid": "TR_AsVx6mXCeyrqVB",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 233.5,
|
||||
"packetsLost": 94,
|
||||
"jitterMs": 0,
|
||||
"audioLevel": 0.307,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_ecrQddbJEyhw",
|
||||
"trackSid": "TR_VSjjPS7DRgdqSi",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 39.6,
|
||||
"packetsLost": 13,
|
||||
"jitterMs": 2,
|
||||
"codec": "video/H264"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_ecrQddbJEyhw",
|
||||
"trackSid": "TR_AMQmi9tr3ijwD7",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 99.1,
|
||||
"packetsLost": 86,
|
||||
"jitterMs": 1,
|
||||
"audioLevel": 0.307,
|
||||
"codec": "audio/opus"
|
||||
}
|
||||
],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 1,
|
||||
"outgoingVideoFramesProduced": 653,
|
||||
"outgoingVideoFramesAccepted": 653,
|
||||
"outgoingVideoFramesDropped": 27,
|
||||
"outgoingVideoFramesCoalesced": 27,
|
||||
"outgoingVideoFramesCaptured": 625,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 28.71,
|
||||
"outgoingVideoTargetFps": 30,
|
||||
"outgoingVideoMaxQueueAgeMs": 34,
|
||||
"outgoingVideoMaxPushLatencyMs": 34,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 32,
|
||||
"adaptiveSendTier": "full",
|
||||
"adaptiveSendReason": "stable"
|
||||
}
|
||||
},
|
||||
"subscriberStats": {
|
||||
"rttMs": null,
|
||||
"outbound": [],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_cdeic4ojSyhV",
|
||||
"trackSid": "TR_AMd395vNaQvHas",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 98.3,
|
||||
"packetsLost": 33,
|
||||
"jitterMs": 0,
|
||||
"audioLevel": 0.306,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_cdeic4ojSyhV",
|
||||
"trackSid": "TR_VSVinYCWjRrXgb",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 39,
|
||||
"packetsLost": 42,
|
||||
"jitterMs": 2,
|
||||
"codec": "video/H264"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_cdeic4ojSyhV",
|
||||
"trackSid": "TR_AsSinL94mqRm57",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 253.1,
|
||||
"packetsLost": 2,
|
||||
"jitterMs": 0,
|
||||
"audioLevel": 0.319,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_ecrQddbJEyhw",
|
||||
"trackSid": "TR_AsVx6mXCeyrqVB",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 253.3,
|
||||
"packetsLost": 19,
|
||||
"jitterMs": 0,
|
||||
"audioLevel": 0.307,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_ecrQddbJEyhw",
|
||||
"trackSid": "TR_AMQmi9tr3ijwD7",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 98.3,
|
||||
"packetsLost": 3,
|
||||
"jitterMs": 1,
|
||||
"audioLevel": 0.307,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_ecrQddbJEyhw",
|
||||
"trackSid": "TR_VSjjPS7DRgdqSi",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 38.4,
|
||||
"packetsLost": 43,
|
||||
"jitterMs": 2,
|
||||
"codec": "video/H264"
|
||||
}
|
||||
],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 0,
|
||||
"outgoingVideoFramesProduced": 0,
|
||||
"outgoingVideoFramesAccepted": 0,
|
||||
"outgoingVideoFramesDropped": 0,
|
||||
"outgoingVideoFramesCoalesced": 0,
|
||||
"outgoingVideoFramesCaptured": 0,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 0,
|
||||
"outgoingVideoTargetFps": 0,
|
||||
"outgoingVideoMaxQueueAgeMs": 0,
|
||||
"outgoingVideoMaxPushLatencyMs": 0,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 0,
|
||||
"adaptiveSendTier": "idle",
|
||||
"adaptiveSendReason": "notPublishing"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+636
@@ -0,0 +1,636 @@
|
||||
{
|
||||
"status": "pass",
|
||||
"startedAt": "2026-06-05T20:45:05.208Z",
|
||||
"endedAt": "2026-06-05T20:45:28.695Z",
|
||||
"platform": "darwin",
|
||||
"arch": "arm64",
|
||||
"config": {
|
||||
"url": "ws://127.0.0.1:17880",
|
||||
"serverApiUrl": "http://127.0.0.1:17880",
|
||||
"apiKey": "devkey",
|
||||
"room": "fluxer-webrtc-harness-421-04fac24c-55a5-4189-9d7a-5689875cf9b9",
|
||||
"externalTokens": false,
|
||||
"publisherIdentity": "fluxer-native-publisher-421",
|
||||
"secondaryPublisherIdentity": "fluxer-native-publisher-2-421",
|
||||
"subscriberIdentity": "fluxer-native-subscriber-421",
|
||||
"required": true,
|
||||
"strict": true,
|
||||
"timeoutMs": 90000,
|
||||
"connectTimeoutMs": 30000,
|
||||
"disconnectTimeoutMs": 10000,
|
||||
"probeTimeoutMs": 1500,
|
||||
"durationMs": 20000,
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"expectedWidth": 1280,
|
||||
"expectedHeight": 720,
|
||||
"fps": 30,
|
||||
"minFpsRatio": 0.9,
|
||||
"maxFrameGapMs": 250,
|
||||
"maxAudioFrameGapMs": 250,
|
||||
"maxAvDriftMs": 120,
|
||||
"maxPacketLoss": null,
|
||||
"requireStableResolution": true,
|
||||
"videoPattern": "fast",
|
||||
"videoInput": "nv12",
|
||||
"subscriberVideoQuality": "high",
|
||||
"screenCodecs": ["h264"],
|
||||
"expectedScreenCodecs": ["h264"],
|
||||
"codec": "h264",
|
||||
"expectedScreenCodec": "video/H264",
|
||||
"secondaryPublisher": true,
|
||||
"secondaryPublisherCodec": "vp8",
|
||||
"secondaryPublisherCodecExplicit": true,
|
||||
"expectedSecondaryPublisherCodec": "video/VP8",
|
||||
"expectedSecondaryPublisherCodecExplicit": true,
|
||||
"screenSimulcast": false,
|
||||
"secondaryPublisherScreenSimulcast": false,
|
||||
"adaptiveSend": true,
|
||||
"minVideoFps": 15,
|
||||
"minResolutionScale": 0.5,
|
||||
"maxAudioBufferMs": 750,
|
||||
"secondaryPublisherMicrophone": true,
|
||||
"secondaryPublisherScreenAudio": true,
|
||||
"maxBitrateBps": 400000,
|
||||
"sampleRate": 48000,
|
||||
"channels": 1,
|
||||
"audioChunkMs": 20,
|
||||
"microphone": true,
|
||||
"screenAudio": true,
|
||||
"dataPacket": true,
|
||||
"subscriptionCycle": false,
|
||||
"validateServerPublishing": true,
|
||||
"camera": false,
|
||||
"cameraDeviceId": null,
|
||||
"expectedCameraCodec": null,
|
||||
"expectedHardwareEncoder": null,
|
||||
"reportPath": "/Users/hampus/Development/fluxer/fluxer_desktop/native-media-reports/mac-m3-ultra-livekit-alltracks-serverpub-mixed-20260605T204504Z.json",
|
||||
"verbose": false,
|
||||
"scenarioName": "codec-h264-with-vp8",
|
||||
"apiSecret": "<redacted>",
|
||||
"e2eeKey": null,
|
||||
"publisherToken": null,
|
||||
"secondaryPublisherToken": null,
|
||||
"subscriberToken": null
|
||||
},
|
||||
"checks": [
|
||||
{
|
||||
"name": "publisher connected",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber connected",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher local screenshare publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote screenshare subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video frames >= 6",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber video frame callback",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screenshare stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video stats count >= 2",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber video resolution 1280x720",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber aggregate inbound audio frames >= 12",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio stats count >= 4",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher local microphone publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote microphone subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio frames >= 12",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound microphone stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher local screen-share audio publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote screen-share audio subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screen-share audio stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher connected",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher local screenshare publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote secondary screenshare subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher outbound screenshare stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher outbound screenshare codec video/VP8",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound secondary codec video/VP8",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher local microphone publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote secondary microphone subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher outbound microphone stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher local screen-share audio publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote secondary screen-share audio subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher outbound screen-share audio stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber data packet received",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber secondary data packet received",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screenshare codec video/H264",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video codec video/H264",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "server publishing API participants listed",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "server sees publisher screenshare publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "server sees publisher microphone publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "server sees publisher screen-share audio publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "server sees secondary publisher screenshare publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "server sees secondary publisher microphone publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "server sees secondary publisher screen-share audio publication",
|
||||
"pass": true
|
||||
}
|
||||
],
|
||||
"skippedReason": null,
|
||||
"error": null,
|
||||
"hardwareEncoder": {
|
||||
"available": true,
|
||||
"backend": "videotoolbox",
|
||||
"compiled": true,
|
||||
"runtime": true,
|
||||
"codecs": ["h264", "h265"],
|
||||
"zeroCopy": false,
|
||||
"nativeInputs": [],
|
||||
"detail": "VideoToolbox can create hardware-accelerated compression sessions for h264, h265; supported hardware-codec probe set: h264, h265"
|
||||
},
|
||||
"metrics": {
|
||||
"inboundAudioFrames": 9080,
|
||||
"inboundVideoFrames": 1223,
|
||||
"strictAudioFrames": 199,
|
||||
"strictVideoFrames": 1137,
|
||||
"videoCallbacks": 1222,
|
||||
"videoBytes": 1689292800,
|
||||
"receivedFps": 56.81,
|
||||
"requiredFps": 27,
|
||||
"maxVideoFrameGapMs": 99,
|
||||
"maxAudioFrameGapMs": 102,
|
||||
"maxVideoFrameGapOverallMs": 100,
|
||||
"maxAudioFrameGapOverallMs": 102,
|
||||
"avDriftMs": 92,
|
||||
"maxObservedPacketLoss": 186,
|
||||
"maxObservedPacketLossDelta": 163,
|
||||
"videoResolutionCounts": {
|
||||
"1280x720": 1137
|
||||
},
|
||||
"videoResolutionMismatchCount": 0,
|
||||
"droppedVideoFrameCallbacks": 0,
|
||||
"publisherVideoPump": {
|
||||
"input": "nv12",
|
||||
"pattern": "fast",
|
||||
"targetFps": 30,
|
||||
"startedAtMs": 1780692305878,
|
||||
"stoppedAtMs": null,
|
||||
"framesPushed": 685,
|
||||
"framesRejected": 0,
|
||||
"errors": 0,
|
||||
"maxPushGapMs": 36,
|
||||
"lastPushAtMs": 1780692328677,
|
||||
"elapsedMs": 22834,
|
||||
"producedFps": 30
|
||||
},
|
||||
"secondaryPublisherVideoPump": {
|
||||
"input": "nv12",
|
||||
"pattern": "fast",
|
||||
"targetFps": 30,
|
||||
"startedAtMs": 1780692305878,
|
||||
"stoppedAtMs": null,
|
||||
"framesPushed": 685,
|
||||
"framesRejected": 0,
|
||||
"errors": 0,
|
||||
"maxPushGapMs": 36,
|
||||
"lastPushAtMs": 1780692328677,
|
||||
"elapsedMs": 22834,
|
||||
"producedFps": 30
|
||||
},
|
||||
"serverPublishing": {
|
||||
"fetchedAtMs": 1780692308436,
|
||||
"error": null,
|
||||
"participants": [
|
||||
{
|
||||
"identity": "fluxer-native-publisher-421",
|
||||
"trackCount": 3,
|
||||
"tracks": [
|
||||
{
|
||||
"sid": "TR_VS73hbjzW6G7kV",
|
||||
"name": "screen",
|
||||
"kind": "video",
|
||||
"source": "screenshare",
|
||||
"mimeType": "video/H264",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_AMncny8z7koEGm",
|
||||
"name": "mic",
|
||||
"kind": "audio",
|
||||
"source": "microphone",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_Aso75dfBWxWEyj",
|
||||
"name": "screen-audio",
|
||||
"kind": "audio",
|
||||
"source": "screenshareAudio",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"identity": "fluxer-native-publisher-2-421",
|
||||
"trackCount": 3,
|
||||
"tracks": [
|
||||
{
|
||||
"sid": "TR_AsxFsT7RDTdKQu",
|
||||
"name": "screen-audio",
|
||||
"kind": "audio",
|
||||
"source": "screenshareAudio",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_VSUZjTy2hrcZCc",
|
||||
"name": "screen",
|
||||
"kind": "video",
|
||||
"source": "screenshare",
|
||||
"mimeType": "video/VP8",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_AMuYbUnWUcAZxj",
|
||||
"name": "mic",
|
||||
"kind": "audio",
|
||||
"source": "microphone",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"identity": "fluxer-native-subscriber-421",
|
||||
"trackCount": 0,
|
||||
"tracks": []
|
||||
}
|
||||
]
|
||||
},
|
||||
"lastVideoMeta": {
|
||||
"participantSid": "PA_J5CFmBPpkkyM",
|
||||
"trackSid": "TR_VS73hbjzW6G7kV",
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"timestampUs": 247175096000
|
||||
},
|
||||
"publisherStats": {
|
||||
"rttMs": 1,
|
||||
"outbound": [
|
||||
{
|
||||
"trackSid": "TR_VS73hbjzW6G7kV",
|
||||
"source": "screenshare",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 38.6,
|
||||
"packetsLost": 0,
|
||||
"fps": 28,
|
||||
"codec": "video/H264"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_Aso75dfBWxWEyj",
|
||||
"source": "screenshareAudio",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 261.1,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_AMncny8z7koEGm",
|
||||
"source": "microphone",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 98.3,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
}
|
||||
],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_9zvEJKeZq55z",
|
||||
"trackSid": "TR_VSUZjTy2hrcZCc",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 29.7,
|
||||
"packetsLost": 37,
|
||||
"jitterMs": 3,
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_9zvEJKeZq55z",
|
||||
"trackSid": "TR_AsxFsT7RDTdKQu",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 249.7,
|
||||
"packetsLost": 87,
|
||||
"jitterMs": 0,
|
||||
"audioLevel": 0.307,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_9zvEJKeZq55z",
|
||||
"trackSid": "TR_AMuYbUnWUcAZxj",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 91.6,
|
||||
"packetsLost": 62,
|
||||
"jitterMs": 0,
|
||||
"audioLevel": 0.321,
|
||||
"codec": "audio/opus"
|
||||
}
|
||||
],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 0,
|
||||
"outgoingVideoFramesProduced": 683,
|
||||
"outgoingVideoFramesAccepted": 683,
|
||||
"outgoingVideoFramesDropped": 29,
|
||||
"outgoingVideoFramesCoalesced": 29,
|
||||
"outgoingVideoFramesCaptured": 654,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 28.71,
|
||||
"outgoingVideoTargetFps": 30,
|
||||
"outgoingVideoMaxQueueAgeMs": 34,
|
||||
"outgoingVideoMaxPushLatencyMs": 34,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 30,
|
||||
"adaptiveSendTier": "full",
|
||||
"adaptiveSendReason": "stable"
|
||||
}
|
||||
},
|
||||
"secondaryPublisherStats": {
|
||||
"rttMs": 1,
|
||||
"outbound": [
|
||||
{
|
||||
"trackSid": "TR_AMuYbUnWUcAZxj",
|
||||
"source": "microphone",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 99.2,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_AsxFsT7RDTdKQu",
|
||||
"source": "screenshareAudio",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 264.8,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_VSUZjTy2hrcZCc",
|
||||
"source": "screenshare",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 29.7,
|
||||
"packetsLost": 0,
|
||||
"fps": 29,
|
||||
"codec": "video/VP8"
|
||||
}
|
||||
],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_J5CFmBPpkkyM",
|
||||
"trackSid": "TR_VS73hbjzW6G7kV",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 38.6,
|
||||
"packetsLost": 1,
|
||||
"jitterMs": 3,
|
||||
"codec": "video/H264"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_J5CFmBPpkkyM",
|
||||
"trackSid": "TR_Aso75dfBWxWEyj",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 260.9,
|
||||
"packetsLost": 4,
|
||||
"jitterMs": 1,
|
||||
"audioLevel": 0.318,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_J5CFmBPpkkyM",
|
||||
"trackSid": "TR_AMncny8z7koEGm",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 98.3,
|
||||
"packetsLost": 2,
|
||||
"jitterMs": 1,
|
||||
"audioLevel": 0.317,
|
||||
"codec": "audio/opus"
|
||||
}
|
||||
],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 0,
|
||||
"outgoingVideoFramesProduced": 683,
|
||||
"outgoingVideoFramesAccepted": 683,
|
||||
"outgoingVideoFramesDropped": 29,
|
||||
"outgoingVideoFramesCoalesced": 29,
|
||||
"outgoingVideoFramesCaptured": 654,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 28.71,
|
||||
"outgoingVideoTargetFps": 30,
|
||||
"outgoingVideoMaxQueueAgeMs": 34,
|
||||
"outgoingVideoMaxPushLatencyMs": 34,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 30,
|
||||
"adaptiveSendTier": "full",
|
||||
"adaptiveSendReason": "stable"
|
||||
}
|
||||
},
|
||||
"subscriberStats": {
|
||||
"rttMs": 1,
|
||||
"outbound": [],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_9zvEJKeZq55z",
|
||||
"trackSid": "TR_VSUZjTy2hrcZCc",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 30.1,
|
||||
"packetsLost": 3,
|
||||
"jitterMs": 3,
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_9zvEJKeZq55z",
|
||||
"trackSid": "TR_AsxFsT7RDTdKQu",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 259.8,
|
||||
"packetsLost": 3,
|
||||
"jitterMs": 0,
|
||||
"audioLevel": 0.336,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_9zvEJKeZq55z",
|
||||
"trackSid": "TR_AMuYbUnWUcAZxj",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 99,
|
||||
"packetsLost": 3,
|
||||
"jitterMs": 0,
|
||||
"audioLevel": 0.352,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_J5CFmBPpkkyM",
|
||||
"trackSid": "TR_AMncny8z7koEGm",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 95.5,
|
||||
"packetsLost": 64,
|
||||
"jitterMs": 1,
|
||||
"audioLevel": 0.306,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_J5CFmBPpkkyM",
|
||||
"trackSid": "TR_VS73hbjzW6G7kV",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 40,
|
||||
"packetsLost": 27,
|
||||
"jitterMs": 3,
|
||||
"codec": "video/H264"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_J5CFmBPpkkyM",
|
||||
"trackSid": "TR_Aso75dfBWxWEyj",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 244.3,
|
||||
"packetsLost": 67,
|
||||
"jitterMs": 0,
|
||||
"audioLevel": 0.31,
|
||||
"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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+636
@@ -0,0 +1,636 @@
|
||||
{
|
||||
"status": "fail",
|
||||
"startedAt": "2026-06-05T20:37:40.480Z",
|
||||
"endedAt": "2026-06-05T20:37:52.123Z",
|
||||
"platform": "darwin",
|
||||
"arch": "arm64",
|
||||
"config": {
|
||||
"url": "ws://127.0.0.1:17880",
|
||||
"serverApiUrl": "http://127.0.0.1:17880",
|
||||
"apiKey": "devkey",
|
||||
"room": "fluxer-webrtc-harness-99206-d8ecfb6b-5331-4b04-9ac0-0f510f626c7b",
|
||||
"externalTokens": false,
|
||||
"publisherIdentity": "fluxer-native-publisher-99206",
|
||||
"secondaryPublisherIdentity": "fluxer-native-publisher-2-99206",
|
||||
"subscriberIdentity": "fluxer-native-subscriber-99206",
|
||||
"required": true,
|
||||
"strict": true,
|
||||
"timeoutMs": 60000,
|
||||
"connectTimeoutMs": 30000,
|
||||
"disconnectTimeoutMs": 10000,
|
||||
"probeTimeoutMs": 1500,
|
||||
"durationMs": 10000,
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"expectedWidth": 1280,
|
||||
"expectedHeight": 720,
|
||||
"fps": 30,
|
||||
"minFpsRatio": 0.94,
|
||||
"maxFrameGapMs": 250,
|
||||
"maxAudioFrameGapMs": 250,
|
||||
"maxAvDriftMs": 80,
|
||||
"maxPacketLoss": 0,
|
||||
"requireStableResolution": true,
|
||||
"videoPattern": "fast",
|
||||
"videoInput": "nv12",
|
||||
"subscriberVideoQuality": "high",
|
||||
"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": false,
|
||||
"validateServerPublishing": true,
|
||||
"camera": false,
|
||||
"cameraDeviceId": null,
|
||||
"expectedCameraCodec": null,
|
||||
"expectedHardwareEncoder": null,
|
||||
"reportPath": "/Users/hampus/Development/fluxer/fluxer_desktop/native-media-reports/mac-m3-ultra-livekit-multipub-audio-nosim-20260605T203740Z.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 1280x720",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber aggregate inbound audio frames >= 12",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio stats count >= 4",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher local microphone publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote microphone subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio frames >= 12",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound microphone stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher local screen-share audio publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote screen-share audio subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screen-share audio stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher connected",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher local screenshare publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote secondary screenshare subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher outbound screenshare stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher outbound screenshare codec video/VP8",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound secondary codec video/VP8",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher local microphone publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote secondary microphone subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher outbound microphone stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher local screen-share audio publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote secondary screen-share audio subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher outbound screen-share audio stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber data packet received",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber secondary data packet received",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screenshare codec video/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": "A/V drift 86ms exceeds 80ms; observed packet loss delta 97 exceeds 0",
|
||||
"hardwareEncoder": {
|
||||
"available": true,
|
||||
"backend": "videotoolbox",
|
||||
"compiled": true,
|
||||
"runtime": true,
|
||||
"codecs": ["h264", "h265"],
|
||||
"zeroCopy": false,
|
||||
"nativeInputs": [],
|
||||
"detail": "VideoToolbox can create hardware-accelerated compression sessions for h264, h265; supported hardware-codec probe set: h264, h265"
|
||||
},
|
||||
"metrics": {
|
||||
"inboundAudioFrames": 4368,
|
||||
"inboundVideoFrames": 630,
|
||||
"strictAudioFrames": 99,
|
||||
"strictVideoFrames": 575,
|
||||
"videoCallbacks": 630,
|
||||
"videoBytes": 870912000,
|
||||
"receivedFps": 57.46,
|
||||
"requiredFps": 28.2,
|
||||
"maxVideoFrameGapMs": 139,
|
||||
"maxAudioFrameGapMs": 102,
|
||||
"maxVideoFrameGapOverallMs": 139,
|
||||
"maxAudioFrameGapOverallMs": 102,
|
||||
"avDriftMs": 86,
|
||||
"maxObservedPacketLoss": 106,
|
||||
"maxObservedPacketLossDelta": 97,
|
||||
"videoResolutionCounts": {
|
||||
"1280x720": 575
|
||||
},
|
||||
"videoResolutionMismatchCount": 0,
|
||||
"droppedVideoFrameCallbacks": 0,
|
||||
"publisherVideoPump": {
|
||||
"input": "nv12",
|
||||
"pattern": "fast",
|
||||
"targetFps": 30,
|
||||
"startedAtMs": 1780691861125,
|
||||
"stoppedAtMs": null,
|
||||
"framesPushed": 330,
|
||||
"framesRejected": 0,
|
||||
"errors": 0,
|
||||
"maxPushGapMs": 36,
|
||||
"lastPushAtMs": 1780691872091,
|
||||
"elapsedMs": 11091,
|
||||
"producedFps": 29.75
|
||||
},
|
||||
"secondaryPublisherVideoPump": {
|
||||
"input": "nv12",
|
||||
"pattern": "fast",
|
||||
"targetFps": 30,
|
||||
"startedAtMs": 1780691861125,
|
||||
"stoppedAtMs": null,
|
||||
"framesPushed": 330,
|
||||
"framesRejected": 0,
|
||||
"errors": 0,
|
||||
"maxPushGapMs": 36,
|
||||
"lastPushAtMs": 1780691872091,
|
||||
"elapsedMs": 11091,
|
||||
"producedFps": 29.75
|
||||
},
|
||||
"serverPublishing": {
|
||||
"fetchedAtMs": 1780691861869,
|
||||
"error": null,
|
||||
"participants": [
|
||||
{
|
||||
"identity": "fluxer-native-subscriber-99206",
|
||||
"trackCount": 0,
|
||||
"tracks": []
|
||||
},
|
||||
{
|
||||
"identity": "fluxer-native-publisher-99206",
|
||||
"trackCount": 3,
|
||||
"tracks": [
|
||||
{
|
||||
"sid": "TR_AsHmDRoRwwH2rj",
|
||||
"name": "screen-audio",
|
||||
"kind": "audio",
|
||||
"source": "screenshareAudio",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_VSFufssZ8C8oGR",
|
||||
"name": "screen",
|
||||
"kind": "video",
|
||||
"source": "screenshare",
|
||||
"mimeType": "video/VP8",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_AMofk8na2BK2zW",
|
||||
"name": "mic",
|
||||
"kind": "audio",
|
||||
"source": "microphone",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"identity": "fluxer-native-publisher-2-99206",
|
||||
"trackCount": 3,
|
||||
"tracks": [
|
||||
{
|
||||
"sid": "TR_VSjFwfYRyNg8nM",
|
||||
"name": "screen",
|
||||
"kind": "video",
|
||||
"source": "screenshare",
|
||||
"mimeType": "video/VP8",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_AMqoCF5pBKLLtZ",
|
||||
"name": "mic",
|
||||
"kind": "audio",
|
||||
"source": "microphone",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_AsYeF5v2Lv8BFF",
|
||||
"name": "screen-audio",
|
||||
"kind": "audio",
|
||||
"source": "screenshareAudio",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"lastVideoMeta": {
|
||||
"participantSid": "PA_mPCx5P6en7uF",
|
||||
"trackSid": "TR_VSjFwfYRyNg8nM",
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"timestampUs": 246718524000
|
||||
},
|
||||
"publisherStats": {
|
||||
"rttMs": 1,
|
||||
"outbound": [
|
||||
{
|
||||
"trackSid": "TR_AMofk8na2BK2zW",
|
||||
"source": "microphone",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 98.8,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_AsHmDRoRwwH2rj",
|
||||
"source": "screenshareAudio",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 260.4,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_VSFufssZ8C8oGR",
|
||||
"source": "screenshare",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 27.5,
|
||||
"packetsLost": 0,
|
||||
"fps": 28,
|
||||
"codec": "video/VP8"
|
||||
}
|
||||
],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_mPCx5P6en7uF",
|
||||
"trackSid": "TR_AMqoCF5pBKLLtZ",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 94.4,
|
||||
"packetsLost": 36,
|
||||
"jitterMs": 0,
|
||||
"audioLevel": 0.337,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_mPCx5P6en7uF",
|
||||
"trackSid": "TR_VSjFwfYRyNg8nM",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 29,
|
||||
"packetsLost": 20,
|
||||
"jitterMs": 4,
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_mPCx5P6en7uF",
|
||||
"trackSid": "TR_AsYeF5v2Lv8BFF",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 252.3,
|
||||
"packetsLost": 36,
|
||||
"jitterMs": 0,
|
||||
"audioLevel": 0.342,
|
||||
"codec": "audio/opus"
|
||||
}
|
||||
],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 0,
|
||||
"outgoingVideoFramesProduced": 322,
|
||||
"outgoingVideoFramesAccepted": 322,
|
||||
"outgoingVideoFramesDropped": 14,
|
||||
"outgoingVideoFramesCoalesced": 14,
|
||||
"outgoingVideoFramesCaptured": 308,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 28.68,
|
||||
"outgoingVideoTargetFps": 30,
|
||||
"outgoingVideoMaxQueueAgeMs": 33,
|
||||
"outgoingVideoMaxPushLatencyMs": 33,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 28,
|
||||
"adaptiveSendTier": "full",
|
||||
"adaptiveSendReason": "stable"
|
||||
}
|
||||
},
|
||||
"secondaryPublisherStats": {
|
||||
"rttMs": 1,
|
||||
"outbound": [
|
||||
{
|
||||
"trackSid": "TR_AsYeF5v2Lv8BFF",
|
||||
"source": "screenshareAudio",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 262.2,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_VSjFwfYRyNg8nM",
|
||||
"source": "screenshare",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 28.9,
|
||||
"packetsLost": 0,
|
||||
"fps": 28,
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_AMqoCF5pBKLLtZ",
|
||||
"source": "microphone",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 98.3,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
}
|
||||
],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_ynXQqotkNFtm",
|
||||
"trackSid": "TR_VSFufssZ8C8oGR",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 26.6,
|
||||
"packetsLost": 18,
|
||||
"jitterMs": 3,
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_ynXQqotkNFtm",
|
||||
"trackSid": "TR_AMofk8na2BK2zW",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 98.8,
|
||||
"packetsLost": 4,
|
||||
"jitterMs": 1,
|
||||
"audioLevel": 0.323,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_ynXQqotkNFtm",
|
||||
"trackSid": "TR_AsHmDRoRwwH2rj",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 260.6,
|
||||
"packetsLost": 3,
|
||||
"jitterMs": 0,
|
||||
"audioLevel": 0.307,
|
||||
"codec": "audio/opus"
|
||||
}
|
||||
],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 0,
|
||||
"outgoingVideoFramesProduced": 322,
|
||||
"outgoingVideoFramesAccepted": 322,
|
||||
"outgoingVideoFramesDropped": 14,
|
||||
"outgoingVideoFramesCoalesced": 14,
|
||||
"outgoingVideoFramesCaptured": 308,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 28.68,
|
||||
"outgoingVideoTargetFps": 30,
|
||||
"outgoingVideoMaxQueueAgeMs": 33,
|
||||
"outgoingVideoMaxPushLatencyMs": 33,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 28,
|
||||
"adaptiveSendTier": "full",
|
||||
"adaptiveSendReason": "stable"
|
||||
}
|
||||
},
|
||||
"subscriberStats": {
|
||||
"rttMs": 1,
|
||||
"outbound": [],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_mPCx5P6en7uF",
|
||||
"trackSid": "TR_AMqoCF5pBKLLtZ",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 96.1,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 0,
|
||||
"audioLevel": 0.307,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_mPCx5P6en7uF",
|
||||
"trackSid": "TR_AsYeF5v2Lv8BFF",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 260.2,
|
||||
"packetsLost": 2,
|
||||
"jitterMs": 0,
|
||||
"audioLevel": 0.307,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_mPCx5P6en7uF",
|
||||
"trackSid": "TR_VSjFwfYRyNg8nM",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 29.1,
|
||||
"packetsLost": 7,
|
||||
"jitterMs": 3,
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_ynXQqotkNFtm",
|
||||
"trackSid": "TR_AMofk8na2BK2zW",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 92.7,
|
||||
"packetsLost": 40,
|
||||
"jitterMs": 1,
|
||||
"audioLevel": 0.307,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_ynXQqotkNFtm",
|
||||
"trackSid": "TR_AsHmDRoRwwH2rj",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 231.2,
|
||||
"packetsLost": 45,
|
||||
"jitterMs": 0,
|
||||
"audioLevel": 0.312,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_ynXQqotkNFtm",
|
||||
"trackSid": "TR_VSFufssZ8C8oGR",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 27.8,
|
||||
"packetsLost": 12,
|
||||
"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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,654 @@
|
||||
{
|
||||
"status": "fail",
|
||||
"startedAt": "2026-06-05T20:26:01.950Z",
|
||||
"endedAt": "2026-06-05T20:26:13.710Z",
|
||||
"platform": "darwin",
|
||||
"arch": "arm64",
|
||||
"config": {
|
||||
"url": "ws://100.79.83.54:17880",
|
||||
"serverApiUrl": "http://100.79.83.54:17880",
|
||||
"apiKey": "devkey",
|
||||
"room": "fluxer-webrtc-harness-97788-e96dacf0-ab09-478e-8f70-cff476c920c4",
|
||||
"externalTokens": false,
|
||||
"publisherIdentity": "fluxer-native-publisher-97788",
|
||||
"secondaryPublisherIdentity": "fluxer-native-publisher-2-97788",
|
||||
"subscriberIdentity": "fluxer-native-subscriber-97788",
|
||||
"required": true,
|
||||
"strict": true,
|
||||
"timeoutMs": 60000,
|
||||
"connectTimeoutMs": 30000,
|
||||
"disconnectTimeoutMs": 10000,
|
||||
"probeTimeoutMs": 1500,
|
||||
"durationMs": 10000,
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"expectedWidth": 1280,
|
||||
"expectedHeight": 720,
|
||||
"fps": 30,
|
||||
"minFpsRatio": 0.95,
|
||||
"maxFrameGapMs": 250,
|
||||
"maxAudioFrameGapMs": 250,
|
||||
"maxAvDriftMs": 80,
|
||||
"maxPacketLoss": 0,
|
||||
"requireStableResolution": true,
|
||||
"videoPattern": "fast",
|
||||
"videoInput": "nv12",
|
||||
"subscriberVideoQuality": "high",
|
||||
"screenCodecs": ["vp8"],
|
||||
"expectedScreenCodecs": ["vp8"],
|
||||
"codec": "vp8",
|
||||
"expectedScreenCodec": "video/VP8",
|
||||
"secondaryPublisher": true,
|
||||
"secondaryPublisherCodec": "vp8",
|
||||
"secondaryPublisherCodecExplicit": false,
|
||||
"expectedSecondaryPublisherCodec": "video/VP8",
|
||||
"expectedSecondaryPublisherCodecExplicit": false,
|
||||
"screenSimulcast": true,
|
||||
"secondaryPublisherScreenSimulcast": true,
|
||||
"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": "/Users/hampus/Development/fluxer/fluxer_desktop/native-media-reports/mac-m3-ultra-livekit-smoke-20260605T202601Z.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 1280x720",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber aggregate inbound audio frames >= 12",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio stats count >= 4",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher local microphone publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote microphone subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio frames >= 12",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound microphone stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher local screen-share audio publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote screen-share audio subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screen-share audio stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher connected",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher local screenshare publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote secondary screenshare subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher outbound screenshare stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher outbound screenshare codec video/VP8",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound secondary codec video/VP8",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher local microphone publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote secondary microphone subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher outbound microphone stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher local screen-share audio publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote secondary screen-share audio subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher outbound screen-share audio stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber data packet received",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber secondary data packet received",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screenshare codec video/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": "observed packet loss 104 exceeds 0; observed 2 video frames outside 1280x720",
|
||||
"hardwareEncoder": {
|
||||
"available": true,
|
||||
"backend": "videotoolbox",
|
||||
"compiled": true,
|
||||
"runtime": true,
|
||||
"codecs": ["h264", "h265"],
|
||||
"zeroCopy": false,
|
||||
"nativeInputs": [],
|
||||
"detail": "VideoToolbox can create hardware-accelerated compression sessions for h264, h265; supported hardware-codec probe set: h264, h265"
|
||||
},
|
||||
"metrics": {
|
||||
"inboundAudioFrames": 4408,
|
||||
"inboundVideoFrames": 581,
|
||||
"strictAudioFrames": 100,
|
||||
"strictVideoFrames": 554,
|
||||
"videoCallbacks": 579,
|
||||
"videoBytes": 796262400,
|
||||
"receivedFps": 56.03,
|
||||
"requiredFps": 28.5,
|
||||
"maxVideoFrameGapMs": 66,
|
||||
"maxAudioFrameGapMs": 102,
|
||||
"maxVideoFrameGapOverallMs": 128,
|
||||
"maxAudioFrameGapOverallMs": 102,
|
||||
"avDriftMs": 13,
|
||||
"maxObservedPacketLoss": 104,
|
||||
"videoResolutionCounts": {
|
||||
"640x360": 2,
|
||||
"1280x720": 552
|
||||
},
|
||||
"videoResolutionMismatchCount": 2,
|
||||
"droppedVideoFrameCallbacks": 0,
|
||||
"publisherVideoPump": {
|
||||
"input": "nv12",
|
||||
"pattern": "fast",
|
||||
"targetFps": 30,
|
||||
"startedAtMs": 1780691162656,
|
||||
"stoppedAtMs": null,
|
||||
"framesPushed": 332,
|
||||
"framesRejected": 0,
|
||||
"errors": 0,
|
||||
"maxPushGapMs": 35,
|
||||
"lastPushAtMs": 1780691173690,
|
||||
"elapsedMs": 11153,
|
||||
"producedFps": 29.77
|
||||
},
|
||||
"secondaryPublisherVideoPump": {
|
||||
"input": "nv12",
|
||||
"pattern": "fast",
|
||||
"targetFps": 30,
|
||||
"startedAtMs": 1780691162656,
|
||||
"stoppedAtMs": null,
|
||||
"framesPushed": 332,
|
||||
"framesRejected": 0,
|
||||
"errors": 0,
|
||||
"maxPushGapMs": 35,
|
||||
"lastPushAtMs": 1780691173690,
|
||||
"elapsedMs": 11153,
|
||||
"producedFps": 29.77
|
||||
},
|
||||
"serverPublishing": {
|
||||
"fetchedAtMs": 1780691163699,
|
||||
"error": null,
|
||||
"participants": [
|
||||
{
|
||||
"identity": "fluxer-native-subscriber-97788",
|
||||
"trackCount": 0,
|
||||
"tracks": []
|
||||
},
|
||||
{
|
||||
"identity": "fluxer-native-publisher-2-97788",
|
||||
"trackCount": 3,
|
||||
"tracks": [
|
||||
{
|
||||
"sid": "TR_AMYDBcTLVPXW5R",
|
||||
"name": "mic",
|
||||
"kind": "audio",
|
||||
"source": "microphone",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_VSSvARsPYMjnfH",
|
||||
"name": "screen",
|
||||
"kind": "video",
|
||||
"source": "screenshare",
|
||||
"mimeType": "video/VP8",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_AseAEMuwQvUDUq",
|
||||
"name": "screen-audio",
|
||||
"kind": "audio",
|
||||
"source": "screenshareAudio",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"identity": "fluxer-native-publisher-97788",
|
||||
"trackCount": 3,
|
||||
"tracks": [
|
||||
{
|
||||
"sid": "TR_AsEpo39LZXJwgU",
|
||||
"name": "screen-audio",
|
||||
"kind": "audio",
|
||||
"source": "screenshareAudio",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_AMZe28QCXUZLuv",
|
||||
"name": "mic",
|
||||
"kind": "audio",
|
||||
"source": "microphone",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_VSVNYfqdKkzCqh",
|
||||
"name": "screen",
|
||||
"kind": "video",
|
||||
"source": "screenshare",
|
||||
"mimeType": "video/VP8",
|
||||
"muted": false
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"lastVideoMeta": {
|
||||
"participantSid": "PA_G5C4xWMJumgR",
|
||||
"trackSid": "TR_VSSvARsPYMjnfH",
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"timestampUs": 246020100000
|
||||
},
|
||||
"publisherStats": {
|
||||
"rttMs": null,
|
||||
"outbound": [
|
||||
{
|
||||
"trackSid": "TR_VSVNYfqdKkzCqh",
|
||||
"source": "screenshare",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 1.9,
|
||||
"packetsLost": 0,
|
||||
"fps": 3,
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_VSVNYfqdKkzCqh",
|
||||
"source": "screenshare",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 35.4,
|
||||
"packetsLost": 0,
|
||||
"fps": 28,
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_AMZe28QCXUZLuv",
|
||||
"source": "microphone",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 98.8,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_AsEpo39LZXJwgU",
|
||||
"source": "screenshareAudio",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 261.7,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
}
|
||||
],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_G5C4xWMJumgR",
|
||||
"trackSid": "TR_VSSvARsPYMjnfH",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 2.3,
|
||||
"packetsLost": 4,
|
||||
"jitterMs": 14,
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_G5C4xWMJumgR",
|
||||
"trackSid": "TR_AMYDBcTLVPXW5R",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 98.2,
|
||||
"packetsLost": 2,
|
||||
"jitterMs": 0,
|
||||
"audioLevel": 0.332,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_G5C4xWMJumgR",
|
||||
"trackSid": "TR_AseAEMuwQvUDUq",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 238,
|
||||
"packetsLost": 44,
|
||||
"jitterMs": 0,
|
||||
"audioLevel": 0.309,
|
||||
"codec": "audio/opus"
|
||||
}
|
||||
],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 1,
|
||||
"outgoingVideoFramesProduced": 326,
|
||||
"outgoingVideoFramesAccepted": 326,
|
||||
"outgoingVideoFramesDropped": 16,
|
||||
"outgoingVideoFramesCoalesced": 16,
|
||||
"outgoingVideoFramesCaptured": 309,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 28.49,
|
||||
"outgoingVideoTargetFps": 30,
|
||||
"outgoingVideoMaxQueueAgeMs": 33,
|
||||
"outgoingVideoMaxPushLatencyMs": 33,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 46,
|
||||
"adaptiveSendTier": "full",
|
||||
"adaptiveSendReason": "stable"
|
||||
}
|
||||
},
|
||||
"secondaryPublisherStats": {
|
||||
"rttMs": 1,
|
||||
"outbound": [
|
||||
{
|
||||
"trackSid": "TR_AseAEMuwQvUDUq",
|
||||
"source": "screenshareAudio",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 257.7,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_VSSvARsPYMjnfH",
|
||||
"source": "screenshare",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 32.8,
|
||||
"packetsLost": 0,
|
||||
"fps": 28,
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_VSSvARsPYMjnfH",
|
||||
"source": "screenshare",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 2.3,
|
||||
"packetsLost": 0,
|
||||
"fps": 3,
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_AMYDBcTLVPXW5R",
|
||||
"source": "microphone",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 98.7,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
}
|
||||
],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_t8raa7C57aBi",
|
||||
"trackSid": "TR_AMZe28QCXUZLuv",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 96.9,
|
||||
"packetsLost": 1,
|
||||
"jitterMs": 1,
|
||||
"audioLevel": 0.31,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_t8raa7C57aBi",
|
||||
"trackSid": "TR_VSVNYfqdKkzCqh",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 1.9,
|
||||
"packetsLost": 1,
|
||||
"jitterMs": 15,
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_t8raa7C57aBi",
|
||||
"trackSid": "TR_AsEpo39LZXJwgU",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 223.8,
|
||||
"packetsLost": 56,
|
||||
"jitterMs": 1,
|
||||
"audioLevel": 0.336,
|
||||
"codec": "audio/opus"
|
||||
}
|
||||
],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 1,
|
||||
"outgoingVideoFramesProduced": 323,
|
||||
"outgoingVideoFramesAccepted": 323,
|
||||
"outgoingVideoFramesDropped": 16,
|
||||
"outgoingVideoFramesCoalesced": 16,
|
||||
"outgoingVideoFramesCaptured": 306,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 28.48,
|
||||
"outgoingVideoTargetFps": 30,
|
||||
"outgoingVideoMaxQueueAgeMs": 33,
|
||||
"outgoingVideoMaxPushLatencyMs": 33,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 47,
|
||||
"adaptiveSendTier": "full",
|
||||
"adaptiveSendReason": "stable"
|
||||
}
|
||||
},
|
||||
"subscriberStats": {
|
||||
"rttMs": 1,
|
||||
"outbound": [],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_G5C4xWMJumgR",
|
||||
"trackSid": "TR_AseAEMuwQvUDUq",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 258.1,
|
||||
"packetsLost": 1,
|
||||
"jitterMs": 0,
|
||||
"audioLevel": 0.307,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_G5C4xWMJumgR",
|
||||
"trackSid": "TR_AMYDBcTLVPXW5R",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 91.1,
|
||||
"packetsLost": 45,
|
||||
"jitterMs": 0,
|
||||
"audioLevel": 0.333,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_G5C4xWMJumgR",
|
||||
"trackSid": "TR_VSSvARsPYMjnfH",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 35,
|
||||
"packetsLost": 4,
|
||||
"jitterMs": 4,
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_t8raa7C57aBi",
|
||||
"trackSid": "TR_AsEpo39LZXJwgU",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 261.8,
|
||||
"packetsLost": 2,
|
||||
"jitterMs": 1,
|
||||
"audioLevel": 0.318,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_t8raa7C57aBi",
|
||||
"trackSid": "TR_VSVNYfqdKkzCqh",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 35.4,
|
||||
"packetsLost": 7,
|
||||
"jitterMs": 4,
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_t8raa7C57aBi",
|
||||
"trackSid": "TR_AMZe28QCXUZLuv",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 86.9,
|
||||
"packetsLost": 45,
|
||||
"jitterMs": 0,
|
||||
"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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+316
@@ -0,0 +1,316 @@
|
||||
{
|
||||
"status": "fail",
|
||||
"startedAt": "2026-06-05T20:28:48.938Z",
|
||||
"endedAt": "2026-06-05T20:29:18.944Z",
|
||||
"platform": "darwin",
|
||||
"arch": "arm64",
|
||||
"config": {
|
||||
"url": "ws://100.79.83.54:17880",
|
||||
"serverApiUrl": "http://100.79.83.54:17880",
|
||||
"apiKey": "devkey",
|
||||
"room": "fluxer-webrtc-harness-98362-5162a4d6-ca28-4b4f-b02e-bea151fc375d",
|
||||
"externalTokens": false,
|
||||
"publisherIdentity": "fluxer-native-publisher-98362",
|
||||
"secondaryPublisherIdentity": "fluxer-native-publisher-2-98362",
|
||||
"subscriberIdentity": "fluxer-native-subscriber-98362",
|
||||
"required": true,
|
||||
"strict": true,
|
||||
"timeoutMs": 60000,
|
||||
"connectTimeoutMs": 30000,
|
||||
"disconnectTimeoutMs": 10000,
|
||||
"probeTimeoutMs": 1500,
|
||||
"durationMs": 10000,
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"expectedWidth": 1280,
|
||||
"expectedHeight": 720,
|
||||
"fps": 30,
|
||||
"minFpsRatio": 0.95,
|
||||
"maxFrameGapMs": 250,
|
||||
"maxAudioFrameGapMs": 250,
|
||||
"maxAvDriftMs": 80,
|
||||
"maxPacketLoss": 0,
|
||||
"requireStableResolution": true,
|
||||
"videoPattern": "fast",
|
||||
"videoInput": "nv12",
|
||||
"subscriberVideoQuality": "high",
|
||||
"screenCodecs": ["vp8"],
|
||||
"expectedScreenCodecs": ["vp8"],
|
||||
"codec": "vp8",
|
||||
"expectedScreenCodec": "video/VP8",
|
||||
"secondaryPublisher": true,
|
||||
"secondaryPublisherCodec": "vp8",
|
||||
"secondaryPublisherCodecExplicit": false,
|
||||
"expectedSecondaryPublisherCodec": "video/VP8",
|
||||
"expectedSecondaryPublisherCodecExplicit": false,
|
||||
"screenSimulcast": true,
|
||||
"secondaryPublisherScreenSimulcast": true,
|
||||
"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": "/Users/hampus/Development/fluxer/fluxer_desktop/native-media-reports/mac-m3-ultra-livekit-smoke-autosuboff-20260605T202848Z.json",
|
||||
"verbose": false,
|
||||
"scenarioName": "codec-vp8-with-vp8",
|
||||
"apiSecret": "<redacted>",
|
||||
"e2eeKey": null,
|
||||
"publisherToken": null,
|
||||
"secondaryPublisherToken": null,
|
||||
"subscriberToken": null
|
||||
},
|
||||
"checks": [
|
||||
{
|
||||
"name": "publisher connected",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber connected",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher local screenshare publication",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote screenshare subscription",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video frames >= 6",
|
||||
"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 >= 2",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber video resolution 1280x720",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber aggregate inbound audio frames >= 12",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio stats count >= 4",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "publisher local microphone publication",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote microphone subscription",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio frames >= 12",
|
||||
"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": "secondary publisher connected",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher local screenshare publication",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote secondary screenshare subscription",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher outbound screenshare stats",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher outbound screenshare codec video/VP8",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound secondary codec video/VP8",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher local microphone publication",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote secondary microphone subscription",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher outbound microphone stats",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher local screen-share audio publication",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote secondary screen-share audio subscription",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher outbound screen-share audio stats",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber data packet received",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber secondary data packet received",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screenshare codec video/VP8",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video codec video/VP8",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "server publishing API participants listed",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "server sees publisher screenshare publication",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "server sees publisher microphone publication",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "server sees publisher screen-share audio publication",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "server sees secondary publisher screenshare publication",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "server sees secondary publisher microphone publication",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "server sees secondary publisher screen-share audio publication",
|
||||
"pass": false
|
||||
}
|
||||
],
|
||||
"skippedReason": null,
|
||||
"error": "Error: connect timed out after 30000ms\n at file:///Users/hampus/Development/fluxer/fluxer_desktop/native/webrtc-sender/scripts/livekit-harness.mjs:1251:9\n at async runHarness (file:///Users/hampus/Development/fluxer/fluxer_desktop/native/webrtc-sender/scripts/livekit-harness.mjs:1668:3)\n at async main (file:///Users/hampus/Development/fluxer/fluxer_desktop/native/webrtc-sender/scripts/livekit-harness.mjs:1920:18)\n at async file:///Users/hampus/Development/fluxer/fluxer_desktop/native/webrtc-sender/scripts/livekit-harness.mjs:1953:19",
|
||||
"hardwareEncoder": {
|
||||
"available": true,
|
||||
"backend": "videotoolbox",
|
||||
"compiled": true,
|
||||
"runtime": true,
|
||||
"codecs": ["h264", "h265"],
|
||||
"zeroCopy": false,
|
||||
"nativeInputs": [],
|
||||
"detail": "VideoToolbox can create hardware-accelerated compression sessions for h264, h265; supported hardware-codec probe set: h264, h265"
|
||||
},
|
||||
"metrics": {
|
||||
"inboundAudioFrames": 0,
|
||||
"inboundVideoFrames": 0,
|
||||
"strictAudioFrames": 0,
|
||||
"strictVideoFrames": 0,
|
||||
"videoCallbacks": 0,
|
||||
"videoBytes": 0,
|
||||
"receivedFps": 0,
|
||||
"requiredFps": 28.5,
|
||||
"maxVideoFrameGapMs": 0,
|
||||
"maxAudioFrameGapMs": 0,
|
||||
"maxVideoFrameGapOverallMs": 0,
|
||||
"maxAudioFrameGapOverallMs": 0,
|
||||
"avDriftMs": null,
|
||||
"maxObservedPacketLoss": 0,
|
||||
"videoResolutionCounts": {},
|
||||
"videoResolutionMismatchCount": 0,
|
||||
"droppedVideoFrameCallbacks": 0,
|
||||
"publisherVideoPump": null,
|
||||
"secondaryPublisherVideoPump": null,
|
||||
"serverPublishing": {
|
||||
"fetchedAtMs": null,
|
||||
"error": null,
|
||||
"participants": []
|
||||
},
|
||||
"lastVideoMeta": null,
|
||||
"publisherStats": null,
|
||||
"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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+654
@@ -0,0 +1,654 @@
|
||||
{
|
||||
"status": "fail",
|
||||
"startedAt": "2026-06-05T20:30:06.419Z",
|
||||
"endedAt": "2026-06-05T20:30:18.162Z",
|
||||
"platform": "darwin",
|
||||
"arch": "arm64",
|
||||
"config": {
|
||||
"url": "ws://127.0.0.1:17880",
|
||||
"serverApiUrl": "http://127.0.0.1:17880",
|
||||
"apiKey": "devkey",
|
||||
"room": "fluxer-webrtc-harness-98467-7ef96043-b8a7-42ac-b2b9-d551434e68b6",
|
||||
"externalTokens": false,
|
||||
"publisherIdentity": "fluxer-native-publisher-98467",
|
||||
"secondaryPublisherIdentity": "fluxer-native-publisher-2-98467",
|
||||
"subscriberIdentity": "fluxer-native-subscriber-98467",
|
||||
"required": true,
|
||||
"strict": true,
|
||||
"timeoutMs": 60000,
|
||||
"connectTimeoutMs": 30000,
|
||||
"disconnectTimeoutMs": 10000,
|
||||
"probeTimeoutMs": 1500,
|
||||
"durationMs": 10000,
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"expectedWidth": 1280,
|
||||
"expectedHeight": 720,
|
||||
"fps": 30,
|
||||
"minFpsRatio": 0.95,
|
||||
"maxFrameGapMs": 250,
|
||||
"maxAudioFrameGapMs": 250,
|
||||
"maxAvDriftMs": 80,
|
||||
"maxPacketLoss": 0,
|
||||
"requireStableResolution": true,
|
||||
"videoPattern": "fast",
|
||||
"videoInput": "nv12",
|
||||
"subscriberVideoQuality": "high",
|
||||
"screenCodecs": ["vp8"],
|
||||
"expectedScreenCodecs": ["vp8"],
|
||||
"codec": "vp8",
|
||||
"expectedScreenCodec": "video/VP8",
|
||||
"secondaryPublisher": true,
|
||||
"secondaryPublisherCodec": "vp8",
|
||||
"secondaryPublisherCodecExplicit": false,
|
||||
"expectedSecondaryPublisherCodec": "video/VP8",
|
||||
"expectedSecondaryPublisherCodecExplicit": false,
|
||||
"screenSimulcast": true,
|
||||
"secondaryPublisherScreenSimulcast": true,
|
||||
"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": "/Users/hampus/Development/fluxer/fluxer_desktop/native-media-reports/mac-m3-ultra-livekit-smoke-local-20260605T203006Z.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 1280x720",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber aggregate inbound audio frames >= 12",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio stats count >= 4",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher local microphone publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote microphone subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio frames >= 12",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound microphone stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher local screen-share audio publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote screen-share audio subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screen-share audio stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher connected",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher local screenshare publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote secondary screenshare subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher outbound screenshare stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher outbound screenshare codec video/VP8",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound secondary codec video/VP8",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher local microphone publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote secondary microphone subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher outbound microphone stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher local screen-share audio publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote secondary screen-share audio subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher outbound screen-share audio stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber data packet received",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber secondary data packet received",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screenshare codec video/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": "observed packet loss 108 exceeds 0; observed 2 video frames outside 1280x720",
|
||||
"hardwareEncoder": {
|
||||
"available": true,
|
||||
"backend": "videotoolbox",
|
||||
"compiled": true,
|
||||
"runtime": true,
|
||||
"codecs": ["h264", "h265"],
|
||||
"zeroCopy": false,
|
||||
"nativeInputs": [],
|
||||
"detail": "VideoToolbox can create hardware-accelerated compression sessions for h264, h265; supported hardware-codec probe set: h264, h265"
|
||||
},
|
||||
"metrics": {
|
||||
"inboundAudioFrames": 4400,
|
||||
"inboundVideoFrames": 573,
|
||||
"strictAudioFrames": 99,
|
||||
"strictVideoFrames": 560,
|
||||
"videoCallbacks": 571,
|
||||
"videoBytes": 785203200,
|
||||
"receivedFps": 56.08,
|
||||
"requiredFps": 28.5,
|
||||
"maxVideoFrameGapMs": 103,
|
||||
"maxAudioFrameGapMs": 102,
|
||||
"maxVideoFrameGapOverallMs": 431,
|
||||
"maxAudioFrameGapOverallMs": 114,
|
||||
"avDriftMs": 55,
|
||||
"maxObservedPacketLoss": 108,
|
||||
"videoResolutionCounts": {
|
||||
"1280x720": 558,
|
||||
"640x360": 2
|
||||
},
|
||||
"videoResolutionMismatchCount": 2,
|
||||
"droppedVideoFrameCallbacks": 0,
|
||||
"publisherVideoPump": {
|
||||
"input": "nv12",
|
||||
"pattern": "fast",
|
||||
"targetFps": 30,
|
||||
"startedAtMs": 1780691407114,
|
||||
"stoppedAtMs": null,
|
||||
"framesPushed": 332,
|
||||
"framesRejected": 0,
|
||||
"errors": 0,
|
||||
"maxPushGapMs": 36,
|
||||
"lastPushAtMs": 1780691418147,
|
||||
"elapsedMs": 11141,
|
||||
"producedFps": 29.8
|
||||
},
|
||||
"secondaryPublisherVideoPump": {
|
||||
"input": "nv12",
|
||||
"pattern": "fast",
|
||||
"targetFps": 30,
|
||||
"startedAtMs": 1780691407115,
|
||||
"stoppedAtMs": null,
|
||||
"framesPushed": 332,
|
||||
"framesRejected": 0,
|
||||
"errors": 0,
|
||||
"maxPushGapMs": 36,
|
||||
"lastPushAtMs": 1780691418147,
|
||||
"elapsedMs": 11140,
|
||||
"producedFps": 29.8
|
||||
},
|
||||
"serverPublishing": {
|
||||
"fetchedAtMs": 1780691408158,
|
||||
"error": null,
|
||||
"participants": [
|
||||
{
|
||||
"identity": "fluxer-native-publisher-98467",
|
||||
"trackCount": 3,
|
||||
"tracks": [
|
||||
{
|
||||
"sid": "TR_AMcinu47L8FgLf",
|
||||
"name": "mic",
|
||||
"kind": "audio",
|
||||
"source": "microphone",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_VS32SFBD3gqCZF",
|
||||
"name": "screen",
|
||||
"kind": "video",
|
||||
"source": "screenshare",
|
||||
"mimeType": "video/VP8",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_AsHUY22SNjwgPj",
|
||||
"name": "screen-audio",
|
||||
"kind": "audio",
|
||||
"source": "screenshareAudio",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"identity": "fluxer-native-subscriber-98467",
|
||||
"trackCount": 0,
|
||||
"tracks": []
|
||||
},
|
||||
{
|
||||
"identity": "fluxer-native-publisher-2-98467",
|
||||
"trackCount": 3,
|
||||
"tracks": [
|
||||
{
|
||||
"sid": "TR_AMnKcxrhawpPFJ",
|
||||
"name": "mic",
|
||||
"kind": "audio",
|
||||
"source": "microphone",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_VSmsDZR3M5RREb",
|
||||
"name": "screen",
|
||||
"kind": "video",
|
||||
"source": "screenshare",
|
||||
"mimeType": "video/VP8",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_Asw3rBwsK6H7ob",
|
||||
"name": "screen-audio",
|
||||
"kind": "audio",
|
||||
"source": "screenshareAudio",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"lastVideoMeta": {
|
||||
"participantSid": "PA_xn87DfYqiNM5",
|
||||
"trackSid": "TR_VSmsDZR3M5RREb",
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"timestampUs": 246264558000
|
||||
},
|
||||
"publisherStats": {
|
||||
"rttMs": 1,
|
||||
"outbound": [
|
||||
{
|
||||
"trackSid": "TR_AsHUY22SNjwgPj",
|
||||
"source": "screenshareAudio",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 261.6,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_VS32SFBD3gqCZF",
|
||||
"source": "screenshare",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 2.2,
|
||||
"packetsLost": 0,
|
||||
"fps": 3,
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_VS32SFBD3gqCZF",
|
||||
"source": "screenshare",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 31.2,
|
||||
"packetsLost": 0,
|
||||
"fps": 28,
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_AMcinu47L8FgLf",
|
||||
"source": "microphone",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 98.8,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
}
|
||||
],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_xn87DfYqiNM5",
|
||||
"trackSid": "TR_VSmsDZR3M5RREb",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 2.3,
|
||||
"packetsLost": 5,
|
||||
"jitterMs": 13,
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_xn87DfYqiNM5",
|
||||
"trackSid": "TR_AMnKcxrhawpPFJ",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 98.8,
|
||||
"packetsLost": 7,
|
||||
"jitterMs": 0,
|
||||
"audioLevel": 0.313,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_xn87DfYqiNM5",
|
||||
"trackSid": "TR_Asw3rBwsK6H7ob",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 236.5,
|
||||
"packetsLost": 55,
|
||||
"jitterMs": 1,
|
||||
"audioLevel": 0.318,
|
||||
"codec": "audio/opus"
|
||||
}
|
||||
],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 1,
|
||||
"outgoingVideoFramesProduced": 326,
|
||||
"outgoingVideoFramesAccepted": 326,
|
||||
"outgoingVideoFramesDropped": 14,
|
||||
"outgoingVideoFramesCoalesced": 14,
|
||||
"outgoingVideoFramesCaptured": 311,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 28.66,
|
||||
"outgoingVideoTargetFps": 30,
|
||||
"outgoingVideoMaxQueueAgeMs": 34,
|
||||
"outgoingVideoMaxPushLatencyMs": 34,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 31,
|
||||
"adaptiveSendTier": "full",
|
||||
"adaptiveSendReason": "stable"
|
||||
}
|
||||
},
|
||||
"secondaryPublisherStats": {
|
||||
"rttMs": 1,
|
||||
"outbound": [
|
||||
{
|
||||
"trackSid": "TR_AMnKcxrhawpPFJ",
|
||||
"source": "microphone",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 98.6,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_VSmsDZR3M5RREb",
|
||||
"source": "screenshare",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 33.7,
|
||||
"packetsLost": 0,
|
||||
"fps": 29,
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_VSmsDZR3M5RREb",
|
||||
"source": "screenshare",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 2.3,
|
||||
"packetsLost": 0,
|
||||
"fps": 3,
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_Asw3rBwsK6H7ob",
|
||||
"source": "screenshareAudio",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 262.2,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
}
|
||||
],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_fFFTp8k4DSa3",
|
||||
"trackSid": "TR_AMcinu47L8FgLf",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 94.8,
|
||||
"packetsLost": 61,
|
||||
"jitterMs": 0,
|
||||
"audioLevel": 0.33,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_fFFTp8k4DSa3",
|
||||
"trackSid": "TR_AsHUY22SNjwgPj",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 252.1,
|
||||
"packetsLost": 44,
|
||||
"jitterMs": 0,
|
||||
"audioLevel": 0.332,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_fFFTp8k4DSa3",
|
||||
"trackSid": "TR_VS32SFBD3gqCZF",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 1.2,
|
||||
"packetsLost": 3,
|
||||
"jitterMs": 13,
|
||||
"codec": "video/VP8"
|
||||
}
|
||||
],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 0,
|
||||
"outgoingVideoFramesProduced": 319,
|
||||
"outgoingVideoFramesAccepted": 319,
|
||||
"outgoingVideoFramesDropped": 14,
|
||||
"outgoingVideoFramesCoalesced": 14,
|
||||
"outgoingVideoFramesCaptured": 305,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 28.67,
|
||||
"outgoingVideoTargetFps": 30,
|
||||
"outgoingVideoMaxQueueAgeMs": 34,
|
||||
"outgoingVideoMaxPushLatencyMs": 34,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 31,
|
||||
"adaptiveSendTier": "full",
|
||||
"adaptiveSendReason": "stable"
|
||||
}
|
||||
},
|
||||
"subscriberStats": {
|
||||
"rttMs": 1,
|
||||
"outbound": [],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_xn87DfYqiNM5",
|
||||
"trackSid": "TR_AMnKcxrhawpPFJ",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 93,
|
||||
"packetsLost": 42,
|
||||
"jitterMs": 0,
|
||||
"audioLevel": 0.334,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_xn87DfYqiNM5",
|
||||
"trackSid": "TR_VSmsDZR3M5RREb",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 30.7,
|
||||
"packetsLost": 13,
|
||||
"jitterMs": 3,
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_xn87DfYqiNM5",
|
||||
"trackSid": "TR_Asw3rBwsK6H7ob",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 261.9,
|
||||
"packetsLost": 9,
|
||||
"jitterMs": 1,
|
||||
"audioLevel": 0.318,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_fFFTp8k4DSa3",
|
||||
"trackSid": "TR_AMcinu47L8FgLf",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 94.8,
|
||||
"packetsLost": 13,
|
||||
"jitterMs": 0,
|
||||
"audioLevel": 0.315,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_fFFTp8k4DSa3",
|
||||
"trackSid": "TR_VS32SFBD3gqCZF",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 31.2,
|
||||
"packetsLost": 14,
|
||||
"jitterMs": 3,
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_fFFTp8k4DSa3",
|
||||
"trackSid": "TR_AsHUY22SNjwgPj",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 261.5,
|
||||
"packetsLost": 3,
|
||||
"jitterMs": 0,
|
||||
"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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+635
@@ -0,0 +1,635 @@
|
||||
{
|
||||
"status": "fail",
|
||||
"startedAt": "2026-06-05T20:30:42.517Z",
|
||||
"endedAt": "2026-06-05T20:30:54.199Z",
|
||||
"platform": "darwin",
|
||||
"arch": "arm64",
|
||||
"config": {
|
||||
"url": "ws://127.0.0.1:17880",
|
||||
"serverApiUrl": "http://127.0.0.1:17880",
|
||||
"apiKey": "devkey",
|
||||
"room": "fluxer-webrtc-harness-98493-8a9f539a-e21e-481c-99b7-cd5ce35f5b34",
|
||||
"externalTokens": false,
|
||||
"publisherIdentity": "fluxer-native-publisher-98493",
|
||||
"secondaryPublisherIdentity": "fluxer-native-publisher-2-98493",
|
||||
"subscriberIdentity": "fluxer-native-subscriber-98493",
|
||||
"required": true,
|
||||
"strict": true,
|
||||
"timeoutMs": 60000,
|
||||
"connectTimeoutMs": 30000,
|
||||
"disconnectTimeoutMs": 10000,
|
||||
"probeTimeoutMs": 1500,
|
||||
"durationMs": 10000,
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"expectedWidth": 1280,
|
||||
"expectedHeight": 720,
|
||||
"fps": 30,
|
||||
"minFpsRatio": 0.95,
|
||||
"maxFrameGapMs": 250,
|
||||
"maxAudioFrameGapMs": 250,
|
||||
"maxAvDriftMs": 80,
|
||||
"maxPacketLoss": 0,
|
||||
"requireStableResolution": true,
|
||||
"videoPattern": "fast",
|
||||
"videoInput": "nv12",
|
||||
"subscriberVideoQuality": "high",
|
||||
"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": false,
|
||||
"validateServerPublishing": true,
|
||||
"camera": false,
|
||||
"cameraDeviceId": null,
|
||||
"expectedCameraCodec": null,
|
||||
"expectedHardwareEncoder": null,
|
||||
"reportPath": "/Users/hampus/Development/fluxer/fluxer_desktop/native-media-reports/mac-m3-ultra-livekit-stable-nosimulcast-20260605T203042Z.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 1280x720",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber aggregate inbound audio frames >= 12",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio stats count >= 4",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher local microphone publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote microphone subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio frames >= 12",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound microphone stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher local screen-share audio publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote screen-share audio subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screen-share audio stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher connected",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher local screenshare publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote secondary screenshare subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher outbound screenshare stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher outbound screenshare codec video/VP8",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound secondary codec video/VP8",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher local microphone publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote secondary microphone subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher outbound microphone stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher local screen-share audio publication",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote secondary screen-share audio subscription",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "secondary publisher outbound screen-share audio stats",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber data packet received",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber secondary data packet received",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screenshare codec video/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": "observed packet loss 240 exceeds 0",
|
||||
"hardwareEncoder": {
|
||||
"available": true,
|
||||
"backend": "videotoolbox",
|
||||
"compiled": true,
|
||||
"runtime": true,
|
||||
"codecs": ["h264", "h265"],
|
||||
"zeroCopy": false,
|
||||
"nativeInputs": [],
|
||||
"detail": "VideoToolbox can create hardware-accelerated compression sessions for h264, h265; supported hardware-codec probe set: h264, h265"
|
||||
},
|
||||
"metrics": {
|
||||
"inboundAudioFrames": 4334,
|
||||
"inboundVideoFrames": 602,
|
||||
"strictAudioFrames": 100,
|
||||
"strictVideoFrames": 571,
|
||||
"videoCallbacks": 600,
|
||||
"videoBytes": 829440000,
|
||||
"receivedFps": 57.45,
|
||||
"requiredFps": 28.5,
|
||||
"maxVideoFrameGapMs": 183,
|
||||
"maxAudioFrameGapMs": 102,
|
||||
"maxVideoFrameGapOverallMs": 208,
|
||||
"maxAudioFrameGapOverallMs": 104,
|
||||
"avDriftMs": 42,
|
||||
"maxObservedPacketLoss": 240,
|
||||
"videoResolutionCounts": {
|
||||
"1280x720": 571
|
||||
},
|
||||
"videoResolutionMismatchCount": 0,
|
||||
"droppedVideoFrameCallbacks": 0,
|
||||
"publisherVideoPump": {
|
||||
"input": "nv12",
|
||||
"pattern": "fast",
|
||||
"targetFps": 30,
|
||||
"startedAtMs": 1780691443335,
|
||||
"stoppedAtMs": null,
|
||||
"framesPushed": 326,
|
||||
"framesRejected": 0,
|
||||
"errors": 0,
|
||||
"maxPushGapMs": 37,
|
||||
"lastPushAtMs": 1780691454168,
|
||||
"elapsedMs": 10954,
|
||||
"producedFps": 29.76
|
||||
},
|
||||
"secondaryPublisherVideoPump": {
|
||||
"input": "nv12",
|
||||
"pattern": "fast",
|
||||
"targetFps": 30,
|
||||
"startedAtMs": 1780691443335,
|
||||
"stoppedAtMs": null,
|
||||
"framesPushed": 326,
|
||||
"framesRejected": 0,
|
||||
"errors": 0,
|
||||
"maxPushGapMs": 36,
|
||||
"lastPushAtMs": 1780691454168,
|
||||
"elapsedMs": 10954,
|
||||
"producedFps": 29.76
|
||||
},
|
||||
"serverPublishing": {
|
||||
"fetchedAtMs": 1780691443938,
|
||||
"error": null,
|
||||
"participants": [
|
||||
{
|
||||
"identity": "fluxer-native-publisher-2-98493",
|
||||
"trackCount": 3,
|
||||
"tracks": [
|
||||
{
|
||||
"sid": "TR_VS6eBSydG2Fe6Y",
|
||||
"name": "screen",
|
||||
"kind": "video",
|
||||
"source": "screenshare",
|
||||
"mimeType": "video/VP8",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_AMwSsNzhnQnZbN",
|
||||
"name": "mic",
|
||||
"kind": "audio",
|
||||
"source": "microphone",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_AsYPbyKEiQYdXA",
|
||||
"name": "screen-audio",
|
||||
"kind": "audio",
|
||||
"source": "screenshareAudio",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"identity": "fluxer-native-publisher-98493",
|
||||
"trackCount": 3,
|
||||
"tracks": [
|
||||
{
|
||||
"sid": "TR_VSsm5jzFutA9po",
|
||||
"name": "screen",
|
||||
"kind": "video",
|
||||
"source": "screenshare",
|
||||
"mimeType": "video/VP8",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_AMd2rFUNTJzRRx",
|
||||
"name": "mic",
|
||||
"kind": "audio",
|
||||
"source": "microphone",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_AsJfw9r7g4LU9b",
|
||||
"name": "screen-audio",
|
||||
"kind": "audio",
|
||||
"source": "screenshareAudio",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"identity": "fluxer-native-subscriber-98493",
|
||||
"trackCount": 0,
|
||||
"tracks": []
|
||||
}
|
||||
]
|
||||
},
|
||||
"lastVideoMeta": {
|
||||
"participantSid": "PA_RjVrb6cfSTYN",
|
||||
"trackSid": "TR_VS6eBSydG2Fe6Y",
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"timestampUs": 246300548000
|
||||
},
|
||||
"publisherStats": {
|
||||
"rttMs": null,
|
||||
"outbound": [
|
||||
{
|
||||
"trackSid": "TR_VSsm5jzFutA9po",
|
||||
"source": "screenshare",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 28.8,
|
||||
"packetsLost": 0,
|
||||
"fps": 29,
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_AsJfw9r7g4LU9b",
|
||||
"source": "screenshareAudio",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 258,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_AMd2rFUNTJzRRx",
|
||||
"source": "microphone",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 98.3,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
}
|
||||
],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_RjVrb6cfSTYN",
|
||||
"trackSid": "TR_AsYPbyKEiQYdXA",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 257.7,
|
||||
"packetsLost": 2,
|
||||
"jitterMs": 0,
|
||||
"audioLevel": 0.307,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_RjVrb6cfSTYN",
|
||||
"trackSid": "TR_VS6eBSydG2Fe6Y",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 27.7,
|
||||
"packetsLost": 8,
|
||||
"jitterMs": 2,
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_RjVrb6cfSTYN",
|
||||
"trackSid": "TR_AMwSsNzhnQnZbN",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 98.1,
|
||||
"packetsLost": 9,
|
||||
"jitterMs": 0,
|
||||
"audioLevel": 0.337,
|
||||
"codec": "audio/opus"
|
||||
}
|
||||
],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 1,
|
||||
"outgoingVideoFramesProduced": 319,
|
||||
"outgoingVideoFramesAccepted": 319,
|
||||
"outgoingVideoFramesDropped": 14,
|
||||
"outgoingVideoFramesCoalesced": 14,
|
||||
"outgoingVideoFramesCaptured": 304,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 28.61,
|
||||
"outgoingVideoTargetFps": 30,
|
||||
"outgoingVideoMaxQueueAgeMs": 35,
|
||||
"outgoingVideoMaxPushLatencyMs": 35,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 30,
|
||||
"adaptiveSendTier": "full",
|
||||
"adaptiveSendReason": "stable"
|
||||
}
|
||||
},
|
||||
"secondaryPublisherStats": {
|
||||
"rttMs": null,
|
||||
"outbound": [
|
||||
{
|
||||
"trackSid": "TR_AsYPbyKEiQYdXA",
|
||||
"source": "screenshareAudio",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 262.5,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_AMwSsNzhnQnZbN",
|
||||
"source": "microphone",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 98,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_VS6eBSydG2Fe6Y",
|
||||
"source": "screenshare",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 26.6,
|
||||
"packetsLost": 0,
|
||||
"fps": 28,
|
||||
"codec": "video/VP8"
|
||||
}
|
||||
],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_SDXDDK8nFR6H",
|
||||
"trackSid": "TR_AMd2rFUNTJzRRx",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 98.3,
|
||||
"packetsLost": 10,
|
||||
"jitterMs": 1,
|
||||
"audioLevel": 0.333,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_SDXDDK8nFR6H",
|
||||
"trackSid": "TR_AsJfw9r7g4LU9b",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 267.9,
|
||||
"packetsLost": 3,
|
||||
"jitterMs": 0,
|
||||
"audioLevel": 0.336,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_SDXDDK8nFR6H",
|
||||
"trackSid": "TR_VSsm5jzFutA9po",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 27.8,
|
||||
"packetsLost": 7,
|
||||
"jitterMs": 3,
|
||||
"codec": "video/VP8"
|
||||
}
|
||||
],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 1,
|
||||
"outgoingVideoFramesProduced": 317,
|
||||
"outgoingVideoFramesAccepted": 317,
|
||||
"outgoingVideoFramesDropped": 14,
|
||||
"outgoingVideoFramesCoalesced": 14,
|
||||
"outgoingVideoFramesCaptured": 302,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 28.61,
|
||||
"outgoingVideoTargetFps": 30,
|
||||
"outgoingVideoMaxQueueAgeMs": 34,
|
||||
"outgoingVideoMaxPushLatencyMs": 34,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 30,
|
||||
"adaptiveSendTier": "full",
|
||||
"adaptiveSendReason": "stable"
|
||||
}
|
||||
},
|
||||
"subscriberStats": {
|
||||
"rttMs": null,
|
||||
"outbound": [],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_RjVrb6cfSTYN",
|
||||
"trackSid": "TR_AMwSsNzhnQnZbN",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 85.4,
|
||||
"packetsLost": 58,
|
||||
"jitterMs": 0,
|
||||
"audioLevel": 0.316,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_RjVrb6cfSTYN",
|
||||
"trackSid": "TR_AsYPbyKEiQYdXA",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 242.8,
|
||||
"packetsLost": 46,
|
||||
"jitterMs": 0,
|
||||
"audioLevel": 0.383,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_RjVrb6cfSTYN",
|
||||
"trackSid": "TR_VS6eBSydG2Fe6Y",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 26.9,
|
||||
"packetsLost": 26,
|
||||
"jitterMs": 2,
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_SDXDDK8nFR6H",
|
||||
"trackSid": "TR_AMd2rFUNTJzRRx",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 94.9,
|
||||
"packetsLost": 52,
|
||||
"jitterMs": 0,
|
||||
"audioLevel": 0.316,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_SDXDDK8nFR6H",
|
||||
"trackSid": "TR_AsJfw9r7g4LU9b",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 258.3,
|
||||
"packetsLost": 42,
|
||||
"jitterMs": 0,
|
||||
"audioLevel": 0.307,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_SDXDDK8nFR6H",
|
||||
"trackSid": "TR_VSsm5jzFutA9po",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 28,
|
||||
"packetsLost": 16,
|
||||
"jitterMs": 2,
|
||||
"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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+1405
File diff suppressed because it is too large
Load Diff
+285
@@ -0,0 +1,285 @@
|
||||
{
|
||||
"status": "fail",
|
||||
"startedAt": "2026-06-05T20:31:04.019Z",
|
||||
"endedAt": "2026-06-05T20:31:15.493Z",
|
||||
"platform": "darwin",
|
||||
"arch": "arm64",
|
||||
"config": {
|
||||
"url": "ws://127.0.0.1:17880",
|
||||
"serverApiUrl": "http://127.0.0.1:17880",
|
||||
"apiKey": "devkey",
|
||||
"room": "fluxer-webrtc-harness-98534-07955759-bfdc-4fc0-8941-6c23669306cb",
|
||||
"externalTokens": false,
|
||||
"publisherIdentity": "fluxer-native-publisher-98534",
|
||||
"secondaryPublisherIdentity": "fluxer-native-publisher-2-98534",
|
||||
"subscriberIdentity": "fluxer-native-subscriber-98534",
|
||||
"required": true,
|
||||
"strict": true,
|
||||
"timeoutMs": 60000,
|
||||
"connectTimeoutMs": 30000,
|
||||
"disconnectTimeoutMs": 10000,
|
||||
"probeTimeoutMs": 1500,
|
||||
"durationMs": 10000,
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"expectedWidth": 1280,
|
||||
"expectedHeight": 720,
|
||||
"fps": 30,
|
||||
"minFpsRatio": 0.95,
|
||||
"maxFrameGapMs": 250,
|
||||
"maxAudioFrameGapMs": 0,
|
||||
"maxAvDriftMs": 0,
|
||||
"maxPacketLoss": 0,
|
||||
"requireStableResolution": true,
|
||||
"videoPattern": "fast",
|
||||
"videoInput": "nv12",
|
||||
"subscriberVideoQuality": "high",
|
||||
"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": false,
|
||||
"secondaryPublisherScreenAudio": false,
|
||||
"maxBitrateBps": 4000000,
|
||||
"sampleRate": 48000,
|
||||
"channels": 1,
|
||||
"audioChunkMs": 20,
|
||||
"microphone": false,
|
||||
"screenAudio": false,
|
||||
"dataPacket": false,
|
||||
"subscriptionCycle": false,
|
||||
"validateServerPublishing": true,
|
||||
"camera": false,
|
||||
"cameraDeviceId": null,
|
||||
"expectedCameraCodec": null,
|
||||
"expectedHardwareEncoder": null,
|
||||
"reportPath": "/Users/hampus/Development/fluxer/fluxer_desktop/native-media-reports/mac-m3-ultra-livekit-video-only-20260605T203103Z.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": "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
|
||||
}
|
||||
],
|
||||
"skippedReason": null,
|
||||
"error": "received FPS 19.96 below 28.5; observed packet loss 1 exceeds 0",
|
||||
"hardwareEncoder": {
|
||||
"available": true,
|
||||
"backend": "videotoolbox",
|
||||
"compiled": true,
|
||||
"runtime": true,
|
||||
"codecs": ["h264", "h265"],
|
||||
"zeroCopy": false,
|
||||
"nativeInputs": [],
|
||||
"detail": "VideoToolbox can create hardware-accelerated compression sessions for h264, h265; supported hardware-codec probe set: h264, h265"
|
||||
},
|
||||
"metrics": {
|
||||
"inboundAudioFrames": 0,
|
||||
"inboundVideoFrames": 227,
|
||||
"strictAudioFrames": 0,
|
||||
"strictVideoFrames": 200,
|
||||
"videoCallbacks": 226,
|
||||
"videoBytes": 312422400,
|
||||
"receivedFps": 19.96,
|
||||
"requiredFps": 28.5,
|
||||
"maxVideoFrameGapMs": 98,
|
||||
"maxAudioFrameGapMs": 0,
|
||||
"maxVideoFrameGapOverallMs": 107,
|
||||
"maxAudioFrameGapOverallMs": 0,
|
||||
"avDriftMs": null,
|
||||
"maxObservedPacketLoss": 1,
|
||||
"videoResolutionCounts": {
|
||||
"1280x720": 200
|
||||
},
|
||||
"videoResolutionMismatchCount": 0,
|
||||
"droppedVideoFrameCallbacks": 0,
|
||||
"publisherVideoPump": {
|
||||
"input": "nv12",
|
||||
"pattern": "fast",
|
||||
"targetFps": 30,
|
||||
"startedAtMs": 1780691464440,
|
||||
"stoppedAtMs": null,
|
||||
"framesPushed": 332,
|
||||
"framesRejected": 0,
|
||||
"errors": 0,
|
||||
"maxPushGapMs": 36,
|
||||
"lastPushAtMs": 1780691475476,
|
||||
"elapsedMs": 11142,
|
||||
"producedFps": 29.8
|
||||
},
|
||||
"secondaryPublisherVideoPump": null,
|
||||
"serverPublishing": {
|
||||
"fetchedAtMs": 1780691465483,
|
||||
"error": null,
|
||||
"participants": [
|
||||
{
|
||||
"identity": "fluxer-native-publisher-98534",
|
||||
"trackCount": 1,
|
||||
"tracks": [
|
||||
{
|
||||
"sid": "TR_VSCdbHfS7Qjnp9",
|
||||
"name": "screen",
|
||||
"kind": "video",
|
||||
"source": "screenshare",
|
||||
"mimeType": "video/VP8",
|
||||
"muted": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"identity": "fluxer-native-subscriber-98534",
|
||||
"trackCount": 0,
|
||||
"tracks": []
|
||||
}
|
||||
]
|
||||
},
|
||||
"lastVideoMeta": {
|
||||
"participantSid": "PA_NeWDVeMforAq",
|
||||
"trackSid": "TR_VSCdbHfS7Qjnp9",
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"timestampUs": 246321877000
|
||||
},
|
||||
"publisherStats": {
|
||||
"rttMs": 1,
|
||||
"outbound": [
|
||||
{
|
||||
"trackSid": "TR_VSCdbHfS7Qjnp9",
|
||||
"source": "screenshare",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 28.5,
|
||||
"packetsLost": 0,
|
||||
"fps": 14,
|
||||
"codec": "video/VP8"
|
||||
}
|
||||
],
|
||||
"inbound": [],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 1,
|
||||
"outgoingVideoFramesProduced": 330,
|
||||
"outgoingVideoFramesAccepted": 330,
|
||||
"outgoingVideoFramesDropped": 100,
|
||||
"outgoingVideoFramesCoalesced": 100,
|
||||
"outgoingVideoFramesCaptured": 229,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 20.83,
|
||||
"outgoingVideoTargetFps": 15,
|
||||
"outgoingVideoMaxQueueAgeMs": 34,
|
||||
"outgoingVideoMaxPushLatencyMs": 34,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 0,
|
||||
"adaptiveSendTier": "fps15",
|
||||
"adaptiveSendReason": "frameCoalescingPressure"
|
||||
}
|
||||
},
|
||||
"secondaryPublisherStats": null,
|
||||
"subscriberStats": {
|
||||
"rttMs": 1,
|
||||
"outbound": [],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_NeWDVeMforAq",
|
||||
"trackSid": "TR_VSCdbHfS7Qjnp9",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 30.5,
|
||||
"packetsLost": 1,
|
||||
"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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+285
@@ -0,0 +1,285 @@
|
||||
{
|
||||
"status": "fail",
|
||||
"startedAt": "2026-06-05T20:35:23.806Z",
|
||||
"endedAt": "2026-06-05T20:35:35.256Z",
|
||||
"platform": "darwin",
|
||||
"arch": "arm64",
|
||||
"config": {
|
||||
"url": "ws://127.0.0.1:17880",
|
||||
"serverApiUrl": "http://127.0.0.1:17880",
|
||||
"apiKey": "devkey",
|
||||
"room": "fluxer-webrtc-harness-99020-a8faf4d3-b9ea-4425-b85e-484c3439bea8",
|
||||
"externalTokens": false,
|
||||
"publisherIdentity": "fluxer-native-publisher-99020",
|
||||
"secondaryPublisherIdentity": "fluxer-native-publisher-2-99020",
|
||||
"subscriberIdentity": "fluxer-native-subscriber-99020",
|
||||
"required": true,
|
||||
"strict": true,
|
||||
"timeoutMs": 60000,
|
||||
"connectTimeoutMs": 30000,
|
||||
"disconnectTimeoutMs": 10000,
|
||||
"probeTimeoutMs": 1500,
|
||||
"durationMs": 10000,
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"expectedWidth": 1280,
|
||||
"expectedHeight": 720,
|
||||
"fps": 30,
|
||||
"minFpsRatio": 0.95,
|
||||
"maxFrameGapMs": 250,
|
||||
"maxAudioFrameGapMs": 0,
|
||||
"maxAvDriftMs": 0,
|
||||
"maxPacketLoss": 0,
|
||||
"requireStableResolution": true,
|
||||
"videoPattern": "fast",
|
||||
"videoInput": "nv12",
|
||||
"subscriberVideoQuality": "high",
|
||||
"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": false,
|
||||
"secondaryPublisherScreenAudio": false,
|
||||
"maxBitrateBps": 4000000,
|
||||
"sampleRate": 48000,
|
||||
"channels": 1,
|
||||
"audioChunkMs": 20,
|
||||
"microphone": false,
|
||||
"screenAudio": false,
|
||||
"dataPacket": false,
|
||||
"subscriptionCycle": false,
|
||||
"validateServerPublishing": true,
|
||||
"camera": false,
|
||||
"cameraDeviceId": null,
|
||||
"expectedCameraCodec": null,
|
||||
"expectedHardwareEncoder": null,
|
||||
"reportPath": "/Users/hampus/Development/fluxer/fluxer_desktop/native-media-reports/mac-m3-ultra-livekit-video-only-adaptive-fixed-20260605T203523Z.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": "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
|
||||
}
|
||||
],
|
||||
"skippedReason": null,
|
||||
"error": "observed packet loss 4 exceeds 0",
|
||||
"hardwareEncoder": {
|
||||
"available": true,
|
||||
"backend": "videotoolbox",
|
||||
"compiled": true,
|
||||
"runtime": true,
|
||||
"codecs": ["h264", "h265"],
|
||||
"zeroCopy": false,
|
||||
"nativeInputs": [],
|
||||
"detail": "VideoToolbox can create hardware-accelerated compression sessions for h264, h265; supported hardware-codec probe set: h264, h265"
|
||||
},
|
||||
"metrics": {
|
||||
"inboundAudioFrames": 0,
|
||||
"inboundVideoFrames": 314,
|
||||
"strictAudioFrames": 0,
|
||||
"strictVideoFrames": 287,
|
||||
"videoCallbacks": 314,
|
||||
"videoBytes": 434073600,
|
||||
"receivedFps": 28.89,
|
||||
"requiredFps": 28.5,
|
||||
"maxVideoFrameGapMs": 65,
|
||||
"maxAudioFrameGapMs": 0,
|
||||
"maxVideoFrameGapOverallMs": 174,
|
||||
"maxAudioFrameGapOverallMs": 0,
|
||||
"avDriftMs": null,
|
||||
"maxObservedPacketLoss": 4,
|
||||
"videoResolutionCounts": {
|
||||
"1280x720": 287
|
||||
},
|
||||
"videoResolutionMismatchCount": 0,
|
||||
"droppedVideoFrameCallbacks": 0,
|
||||
"publisherVideoPump": {
|
||||
"input": "nv12",
|
||||
"pattern": "fast",
|
||||
"targetFps": 30,
|
||||
"startedAtMs": 1780691724194,
|
||||
"stoppedAtMs": null,
|
||||
"framesPushed": 332,
|
||||
"framesRejected": 0,
|
||||
"errors": 0,
|
||||
"maxPushGapMs": 38,
|
||||
"lastPushAtMs": 1780691735226,
|
||||
"elapsedMs": 11160,
|
||||
"producedFps": 29.75
|
||||
},
|
||||
"secondaryPublisherVideoPump": null,
|
||||
"serverPublishing": {
|
||||
"fetchedAtMs": 1780691725246,
|
||||
"error": null,
|
||||
"participants": [
|
||||
{
|
||||
"identity": "fluxer-native-publisher-99020",
|
||||
"trackCount": 1,
|
||||
"tracks": [
|
||||
{
|
||||
"sid": "TR_VSNY7hqQXsYjDU",
|
||||
"name": "screen",
|
||||
"kind": "video",
|
||||
"source": "screenshare",
|
||||
"mimeType": "video/VP8",
|
||||
"muted": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"identity": "fluxer-native-subscriber-99020",
|
||||
"trackCount": 0,
|
||||
"tracks": []
|
||||
}
|
||||
]
|
||||
},
|
||||
"lastVideoMeta": {
|
||||
"participantSid": "PA_4XVg8hrTERta",
|
||||
"trackSid": "TR_VSNY7hqQXsYjDU",
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"timestampUs": 246581659000
|
||||
},
|
||||
"publisherStats": {
|
||||
"rttMs": null,
|
||||
"outbound": [
|
||||
{
|
||||
"trackSid": "TR_VSNY7hqQXsYjDU",
|
||||
"source": "screenshare",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 29.1,
|
||||
"packetsLost": 0,
|
||||
"fps": 28,
|
||||
"codec": "video/VP8"
|
||||
}
|
||||
],
|
||||
"inbound": [],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 0,
|
||||
"outgoingVideoFramesProduced": 330,
|
||||
"outgoingVideoFramesAccepted": 330,
|
||||
"outgoingVideoFramesDropped": 16,
|
||||
"outgoingVideoFramesCoalesced": 16,
|
||||
"outgoingVideoFramesCaptured": 314,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 28.49,
|
||||
"outgoingVideoTargetFps": 30,
|
||||
"outgoingVideoMaxQueueAgeMs": 34,
|
||||
"outgoingVideoMaxPushLatencyMs": 34,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 0,
|
||||
"adaptiveSendTier": "full",
|
||||
"adaptiveSendReason": "stable"
|
||||
}
|
||||
},
|
||||
"secondaryPublisherStats": null,
|
||||
"subscriberStats": {
|
||||
"rttMs": 1,
|
||||
"outbound": [],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_4XVg8hrTERta",
|
||||
"trackSid": "TR_VSNY7hqQXsYjDU",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 29.1,
|
||||
"packetsLost": 4,
|
||||
"jitterMs": 2,
|
||||
"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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+285
@@ -0,0 +1,285 @@
|
||||
{
|
||||
"status": "fail",
|
||||
"startedAt": "2026-06-05T20:31:34.574Z",
|
||||
"endedAt": "2026-06-05T20:31:45.998Z",
|
||||
"platform": "darwin",
|
||||
"arch": "arm64",
|
||||
"config": {
|
||||
"url": "ws://127.0.0.1:17880",
|
||||
"serverApiUrl": "http://127.0.0.1:17880",
|
||||
"apiKey": "devkey",
|
||||
"room": "fluxer-webrtc-harness-98569-9a0c5b4a-c12c-4cce-97ba-5481af7273d4",
|
||||
"externalTokens": false,
|
||||
"publisherIdentity": "fluxer-native-publisher-98569",
|
||||
"secondaryPublisherIdentity": "fluxer-native-publisher-2-98569",
|
||||
"subscriberIdentity": "fluxer-native-subscriber-98569",
|
||||
"required": true,
|
||||
"strict": true,
|
||||
"timeoutMs": 60000,
|
||||
"connectTimeoutMs": 30000,
|
||||
"disconnectTimeoutMs": 10000,
|
||||
"probeTimeoutMs": 1500,
|
||||
"durationMs": 10000,
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"expectedWidth": 1280,
|
||||
"expectedHeight": 720,
|
||||
"fps": 30,
|
||||
"minFpsRatio": 0.95,
|
||||
"maxFrameGapMs": 250,
|
||||
"maxAudioFrameGapMs": 0,
|
||||
"maxAvDriftMs": 0,
|
||||
"maxPacketLoss": 0,
|
||||
"requireStableResolution": true,
|
||||
"videoPattern": "fast",
|
||||
"videoInput": "nv12",
|
||||
"subscriberVideoQuality": "high",
|
||||
"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": false,
|
||||
"minVideoFps": 15,
|
||||
"minResolutionScale": 0.5,
|
||||
"maxAudioBufferMs": 750,
|
||||
"secondaryPublisherMicrophone": false,
|
||||
"secondaryPublisherScreenAudio": false,
|
||||
"maxBitrateBps": 4000000,
|
||||
"sampleRate": 48000,
|
||||
"channels": 1,
|
||||
"audioChunkMs": 20,
|
||||
"microphone": false,
|
||||
"screenAudio": false,
|
||||
"dataPacket": false,
|
||||
"subscriptionCycle": false,
|
||||
"validateServerPublishing": true,
|
||||
"camera": false,
|
||||
"cameraDeviceId": null,
|
||||
"expectedCameraCodec": null,
|
||||
"expectedHardwareEncoder": null,
|
||||
"reportPath": "/Users/hampus/Development/fluxer/fluxer_desktop/native-media-reports/mac-m3-ultra-livekit-video-only-noadaptive-20260605T203134Z.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": "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
|
||||
}
|
||||
],
|
||||
"skippedReason": null,
|
||||
"error": "received FPS 28.45 below 28.5",
|
||||
"hardwareEncoder": {
|
||||
"available": true,
|
||||
"backend": "videotoolbox",
|
||||
"compiled": true,
|
||||
"runtime": true,
|
||||
"codecs": ["h264", "h265"],
|
||||
"zeroCopy": false,
|
||||
"nativeInputs": [],
|
||||
"detail": "VideoToolbox can create hardware-accelerated compression sessions for h264, h265; supported hardware-codec probe set: h264, h265"
|
||||
},
|
||||
"metrics": {
|
||||
"inboundAudioFrames": 0,
|
||||
"inboundVideoFrames": 312,
|
||||
"strictAudioFrames": 0,
|
||||
"strictVideoFrames": 285,
|
||||
"videoCallbacks": 311,
|
||||
"videoBytes": 429926400,
|
||||
"receivedFps": 28.45,
|
||||
"requiredFps": 28.5,
|
||||
"maxVideoFrameGapMs": 61,
|
||||
"maxAudioFrameGapMs": 0,
|
||||
"maxVideoFrameGapOverallMs": 69,
|
||||
"maxAudioFrameGapOverallMs": 0,
|
||||
"avDriftMs": null,
|
||||
"maxObservedPacketLoss": 0,
|
||||
"videoResolutionCounts": {
|
||||
"1280x720": 285
|
||||
},
|
||||
"videoResolutionMismatchCount": 0,
|
||||
"droppedVideoFrameCallbacks": 0,
|
||||
"publisherVideoPump": {
|
||||
"input": "nv12",
|
||||
"pattern": "fast",
|
||||
"targetFps": 30,
|
||||
"startedAtMs": 1780691494944,
|
||||
"stoppedAtMs": null,
|
||||
"framesPushed": 332,
|
||||
"framesRejected": 0,
|
||||
"errors": 0,
|
||||
"maxPushGapMs": 36,
|
||||
"lastPushAtMs": 1780691505978,
|
||||
"elapsedMs": 11144,
|
||||
"producedFps": 29.79
|
||||
},
|
||||
"secondaryPublisherVideoPump": null,
|
||||
"serverPublishing": {
|
||||
"fetchedAtMs": 1780691495987,
|
||||
"error": null,
|
||||
"participants": [
|
||||
{
|
||||
"identity": "fluxer-native-subscriber-98569",
|
||||
"trackCount": 0,
|
||||
"tracks": []
|
||||
},
|
||||
{
|
||||
"identity": "fluxer-native-publisher-98569",
|
||||
"trackCount": 1,
|
||||
"tracks": [
|
||||
{
|
||||
"sid": "TR_VSnPVaEqt8wLKt",
|
||||
"name": "screen",
|
||||
"kind": "video",
|
||||
"source": "screenshare",
|
||||
"mimeType": "video/VP8",
|
||||
"muted": false
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"lastVideoMeta": {
|
||||
"participantSid": "PA_4H7SUk7TRbA7",
|
||||
"trackSid": "TR_VSnPVaEqt8wLKt",
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"timestampUs": 246352378000
|
||||
},
|
||||
"publisherStats": {
|
||||
"rttMs": 1,
|
||||
"outbound": [
|
||||
{
|
||||
"trackSid": "TR_VSnPVaEqt8wLKt",
|
||||
"source": "screenshare",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 28.1,
|
||||
"packetsLost": 0,
|
||||
"fps": 28,
|
||||
"codec": "video/VP8"
|
||||
}
|
||||
],
|
||||
"inbound": [],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 0,
|
||||
"outgoingVideoFramesProduced": 330,
|
||||
"outgoingVideoFramesAccepted": 330,
|
||||
"outgoingVideoFramesDropped": 17,
|
||||
"outgoingVideoFramesCoalesced": 17,
|
||||
"outgoingVideoFramesCaptured": 313,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 28.44,
|
||||
"outgoingVideoTargetFps": 30,
|
||||
"outgoingVideoMaxQueueAgeMs": 34,
|
||||
"outgoingVideoMaxPushLatencyMs": 34,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 0,
|
||||
"adaptiveSendTier": "full",
|
||||
"adaptiveSendReason": "adaptiveDisabled"
|
||||
}
|
||||
},
|
||||
"secondaryPublisherStats": null,
|
||||
"subscriberStats": {
|
||||
"rttMs": 1,
|
||||
"outbound": [],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_4H7SUk7TRbA7",
|
||||
"trackSid": "TR_VSnPVaEqt8wLKt",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 28.1,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 3,
|
||||
"codec": "video/VP8"
|
||||
}
|
||||
],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 0,
|
||||
"outgoingVideoFramesProduced": 0,
|
||||
"outgoingVideoFramesAccepted": 0,
|
||||
"outgoingVideoFramesDropped": 0,
|
||||
"outgoingVideoFramesCoalesced": 0,
|
||||
"outgoingVideoFramesCaptured": 0,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 0,
|
||||
"outgoingVideoTargetFps": 0,
|
||||
"outgoingVideoMaxQueueAgeMs": 0,
|
||||
"outgoingVideoMaxPushLatencyMs": 0,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 0,
|
||||
"adaptiveSendTier": "idle",
|
||||
"adaptiveSendReason": "notPublishing"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+285
@@ -0,0 +1,285 @@
|
||||
{
|
||||
"status": "fail",
|
||||
"startedAt": "2026-06-05T20:32:57.846Z",
|
||||
"endedAt": "2026-06-05T20:33:09.335Z",
|
||||
"platform": "darwin",
|
||||
"arch": "arm64",
|
||||
"config": {
|
||||
"url": "ws://127.0.0.1:17880",
|
||||
"serverApiUrl": "http://127.0.0.1:17880",
|
||||
"apiKey": "devkey",
|
||||
"room": "fluxer-webrtc-harness-98748-d3e8cf0e-bc5c-48e8-b5ef-ed0f993fbe86",
|
||||
"externalTokens": false,
|
||||
"publisherIdentity": "fluxer-native-publisher-98748",
|
||||
"secondaryPublisherIdentity": "fluxer-native-publisher-2-98748",
|
||||
"subscriberIdentity": "fluxer-native-subscriber-98748",
|
||||
"required": true,
|
||||
"strict": true,
|
||||
"timeoutMs": 60000,
|
||||
"connectTimeoutMs": 30000,
|
||||
"disconnectTimeoutMs": 10000,
|
||||
"probeTimeoutMs": 1500,
|
||||
"durationMs": 10000,
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"expectedWidth": 1280,
|
||||
"expectedHeight": 720,
|
||||
"fps": 30,
|
||||
"minFpsRatio": 0.95,
|
||||
"maxFrameGapMs": 250,
|
||||
"maxAudioFrameGapMs": 0,
|
||||
"maxAvDriftMs": 0,
|
||||
"maxPacketLoss": 0,
|
||||
"requireStableResolution": true,
|
||||
"videoPattern": "fast",
|
||||
"videoInput": "nv12",
|
||||
"subscriberVideoQuality": "high",
|
||||
"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": false,
|
||||
"secondaryPublisherScreenAudio": false,
|
||||
"maxBitrateBps": 4000000,
|
||||
"sampleRate": 48000,
|
||||
"channels": 1,
|
||||
"audioChunkMs": 20,
|
||||
"microphone": false,
|
||||
"screenAudio": false,
|
||||
"dataPacket": false,
|
||||
"subscriptionCycle": false,
|
||||
"validateServerPublishing": true,
|
||||
"camera": false,
|
||||
"cameraDeviceId": null,
|
||||
"expectedCameraCodec": null,
|
||||
"expectedHardwareEncoder": null,
|
||||
"reportPath": "/Users/hampus/Development/fluxer/fluxer_desktop/native-media-reports/mac-m3-ultra-livekit-video-only-paced-20260605T203257Z.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": "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
|
||||
}
|
||||
],
|
||||
"skippedReason": null,
|
||||
"error": "received FPS 20.11 below 28.5; observed packet loss 2 exceeds 0",
|
||||
"hardwareEncoder": {
|
||||
"available": true,
|
||||
"backend": "videotoolbox",
|
||||
"compiled": true,
|
||||
"runtime": true,
|
||||
"codecs": ["h264", "h265"],
|
||||
"zeroCopy": false,
|
||||
"nativeInputs": [],
|
||||
"detail": "VideoToolbox can create hardware-accelerated compression sessions for h264, h265; supported hardware-codec probe set: h264, h265"
|
||||
},
|
||||
"metrics": {
|
||||
"inboundAudioFrames": 0,
|
||||
"inboundVideoFrames": 226,
|
||||
"strictAudioFrames": 0,
|
||||
"strictVideoFrames": 201,
|
||||
"videoCallbacks": 225,
|
||||
"videoBytes": 311040000,
|
||||
"receivedFps": 20.11,
|
||||
"requiredFps": 28.5,
|
||||
"maxVideoFrameGapMs": 173,
|
||||
"maxAudioFrameGapMs": 0,
|
||||
"maxVideoFrameGapOverallMs": 173,
|
||||
"maxAudioFrameGapOverallMs": 0,
|
||||
"avDriftMs": null,
|
||||
"maxObservedPacketLoss": 2,
|
||||
"videoResolutionCounts": {
|
||||
"1280x720": 201
|
||||
},
|
||||
"videoResolutionMismatchCount": 0,
|
||||
"droppedVideoFrameCallbacks": 0,
|
||||
"publisherVideoPump": {
|
||||
"input": "nv12",
|
||||
"pattern": "fast",
|
||||
"targetFps": 30,
|
||||
"startedAtMs": 1780691578281,
|
||||
"stoppedAtMs": null,
|
||||
"framesPushed": 332,
|
||||
"framesRejected": 0,
|
||||
"errors": 0,
|
||||
"maxPushGapMs": 35,
|
||||
"lastPushAtMs": 1780691589316,
|
||||
"elapsedMs": 11143,
|
||||
"producedFps": 29.79
|
||||
},
|
||||
"secondaryPublisherVideoPump": null,
|
||||
"serverPublishing": {
|
||||
"fetchedAtMs": 1780691579324,
|
||||
"error": null,
|
||||
"participants": [
|
||||
{
|
||||
"identity": "fluxer-native-subscriber-98748",
|
||||
"trackCount": 0,
|
||||
"tracks": []
|
||||
},
|
||||
{
|
||||
"identity": "fluxer-native-publisher-98748",
|
||||
"trackCount": 1,
|
||||
"tracks": [
|
||||
{
|
||||
"sid": "TR_VS5AVMD9QiLw9T",
|
||||
"name": "screen",
|
||||
"kind": "video",
|
||||
"source": "screenshare",
|
||||
"mimeType": "video/VP8",
|
||||
"muted": false
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"lastVideoMeta": {
|
||||
"participantSid": "PA_wGf7jDpSGqVf",
|
||||
"trackSid": "TR_VS5AVMD9QiLw9T",
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"timestampUs": 246435681000
|
||||
},
|
||||
"publisherStats": {
|
||||
"rttMs": 1,
|
||||
"outbound": [
|
||||
{
|
||||
"trackSid": "TR_VS5AVMD9QiLw9T",
|
||||
"source": "screenshare",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 28.5,
|
||||
"packetsLost": 0,
|
||||
"fps": 14,
|
||||
"codec": "video/VP8"
|
||||
}
|
||||
],
|
||||
"inbound": [],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 0,
|
||||
"outgoingVideoFramesProduced": 330,
|
||||
"outgoingVideoFramesAccepted": 330,
|
||||
"outgoingVideoFramesDropped": 100,
|
||||
"outgoingVideoFramesCoalesced": 100,
|
||||
"outgoingVideoFramesCaptured": 230,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 20.87,
|
||||
"outgoingVideoTargetFps": 15,
|
||||
"outgoingVideoMaxQueueAgeMs": 34,
|
||||
"outgoingVideoMaxPushLatencyMs": 34,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 0,
|
||||
"adaptiveSendTier": "fps15",
|
||||
"adaptiveSendReason": "frameCoalescingPressure"
|
||||
}
|
||||
},
|
||||
"secondaryPublisherStats": null,
|
||||
"subscriberStats": {
|
||||
"rttMs": 1,
|
||||
"outbound": [],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_wGf7jDpSGqVf",
|
||||
"trackSid": "TR_VS5AVMD9QiLw9T",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 28.5,
|
||||
"packetsLost": 2,
|
||||
"jitterMs": 2,
|
||||
"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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+286
@@ -0,0 +1,286 @@
|
||||
{
|
||||
"status": "fail",
|
||||
"startedAt": "2026-06-05T20:37:10.528Z",
|
||||
"endedAt": "2026-06-05T20:37:21.966Z",
|
||||
"platform": "darwin",
|
||||
"arch": "arm64",
|
||||
"config": {
|
||||
"url": "ws://127.0.0.1:17880",
|
||||
"serverApiUrl": "http://127.0.0.1:17880",
|
||||
"apiKey": "devkey",
|
||||
"room": "fluxer-webrtc-harness-99097-fadf776d-a03a-42a1-92bc-c45de56c5a2c",
|
||||
"externalTokens": false,
|
||||
"publisherIdentity": "fluxer-native-publisher-99097",
|
||||
"secondaryPublisherIdentity": "fluxer-native-publisher-2-99097",
|
||||
"subscriberIdentity": "fluxer-native-subscriber-99097",
|
||||
"required": true,
|
||||
"strict": true,
|
||||
"timeoutMs": 60000,
|
||||
"connectTimeoutMs": 30000,
|
||||
"disconnectTimeoutMs": 10000,
|
||||
"probeTimeoutMs": 1500,
|
||||
"durationMs": 10000,
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"expectedWidth": 1280,
|
||||
"expectedHeight": 720,
|
||||
"fps": 30,
|
||||
"minFpsRatio": 0.95,
|
||||
"maxFrameGapMs": 250,
|
||||
"maxAudioFrameGapMs": 0,
|
||||
"maxAvDriftMs": 0,
|
||||
"maxPacketLoss": 0,
|
||||
"requireStableResolution": true,
|
||||
"videoPattern": "fast",
|
||||
"videoInput": "nv12",
|
||||
"subscriberVideoQuality": "high",
|
||||
"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": false,
|
||||
"secondaryPublisherScreenAudio": false,
|
||||
"maxBitrateBps": 4000000,
|
||||
"sampleRate": 48000,
|
||||
"channels": 1,
|
||||
"audioChunkMs": 20,
|
||||
"microphone": false,
|
||||
"screenAudio": false,
|
||||
"dataPacket": false,
|
||||
"subscriptionCycle": false,
|
||||
"validateServerPublishing": true,
|
||||
"camera": false,
|
||||
"cameraDeviceId": null,
|
||||
"expectedCameraCodec": null,
|
||||
"expectedHardwareEncoder": null,
|
||||
"reportPath": "/Users/hampus/Development/fluxer/fluxer_desktop/native-media-reports/mac-m3-ultra-livekit-video-only-strict-delta-20260605T203710Z.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": "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
|
||||
}
|
||||
],
|
||||
"skippedReason": null,
|
||||
"error": "received FPS 28.46 below 28.5",
|
||||
"hardwareEncoder": {
|
||||
"available": true,
|
||||
"backend": "videotoolbox",
|
||||
"compiled": true,
|
||||
"runtime": true,
|
||||
"codecs": ["h264", "h265"],
|
||||
"zeroCopy": false,
|
||||
"nativeInputs": [],
|
||||
"detail": "VideoToolbox can create hardware-accelerated compression sessions for h264, h265; supported hardware-codec probe set: h264, h265"
|
||||
},
|
||||
"metrics": {
|
||||
"inboundAudioFrames": 0,
|
||||
"inboundVideoFrames": 310,
|
||||
"strictAudioFrames": 0,
|
||||
"strictVideoFrames": 285,
|
||||
"videoCallbacks": 309,
|
||||
"videoBytes": 427161600,
|
||||
"receivedFps": 28.46,
|
||||
"requiredFps": 28.5,
|
||||
"maxVideoFrameGapMs": 63,
|
||||
"maxAudioFrameGapMs": 0,
|
||||
"maxVideoFrameGapOverallMs": 69,
|
||||
"maxAudioFrameGapOverallMs": 0,
|
||||
"avDriftMs": null,
|
||||
"maxObservedPacketLoss": 0,
|
||||
"maxObservedPacketLossDelta": 0,
|
||||
"videoResolutionCounts": {
|
||||
"1280x720": 285
|
||||
},
|
||||
"videoResolutionMismatchCount": 0,
|
||||
"droppedVideoFrameCallbacks": 0,
|
||||
"publisherVideoPump": {
|
||||
"input": "nv12",
|
||||
"pattern": "fast",
|
||||
"targetFps": 30,
|
||||
"startedAtMs": 1780691830909,
|
||||
"stoppedAtMs": null,
|
||||
"framesPushed": 332,
|
||||
"framesRejected": 0,
|
||||
"errors": 0,
|
||||
"maxPushGapMs": 36,
|
||||
"lastPushAtMs": 1780691841942,
|
||||
"elapsedMs": 11151,
|
||||
"producedFps": 29.77
|
||||
},
|
||||
"secondaryPublisherVideoPump": null,
|
||||
"serverPublishing": {
|
||||
"fetchedAtMs": 1780691831955,
|
||||
"error": null,
|
||||
"participants": [
|
||||
{
|
||||
"identity": "fluxer-native-subscriber-99097",
|
||||
"trackCount": 0,
|
||||
"tracks": []
|
||||
},
|
||||
{
|
||||
"identity": "fluxer-native-publisher-99097",
|
||||
"trackCount": 1,
|
||||
"tracks": [
|
||||
{
|
||||
"sid": "TR_VSmHHYYxDdRMdt",
|
||||
"name": "screen",
|
||||
"kind": "video",
|
||||
"source": "screenshare",
|
||||
"mimeType": "video/VP8",
|
||||
"muted": false
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"lastVideoMeta": {
|
||||
"participantSid": "PA_ZYRki8TB8qqy",
|
||||
"trackSid": "TR_VSmHHYYxDdRMdt",
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"timestampUs": 246688341000
|
||||
},
|
||||
"publisherStats": {
|
||||
"rttMs": 1,
|
||||
"outbound": [
|
||||
{
|
||||
"trackSid": "TR_VSmHHYYxDdRMdt",
|
||||
"source": "screenshare",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 28.2,
|
||||
"packetsLost": 0,
|
||||
"fps": 29,
|
||||
"codec": "video/VP8"
|
||||
}
|
||||
],
|
||||
"inbound": [],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 0,
|
||||
"outgoingVideoFramesProduced": 329,
|
||||
"outgoingVideoFramesAccepted": 329,
|
||||
"outgoingVideoFramesDropped": 16,
|
||||
"outgoingVideoFramesCoalesced": 16,
|
||||
"outgoingVideoFramesCaptured": 313,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 28.51,
|
||||
"outgoingVideoTargetFps": 30,
|
||||
"outgoingVideoMaxQueueAgeMs": 34,
|
||||
"outgoingVideoMaxPushLatencyMs": 34,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 0,
|
||||
"adaptiveSendTier": "full",
|
||||
"adaptiveSendReason": "stable"
|
||||
}
|
||||
},
|
||||
"secondaryPublisherStats": null,
|
||||
"subscriberStats": {
|
||||
"rttMs": 1,
|
||||
"outbound": [],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_ZYRki8TB8qqy",
|
||||
"trackSid": "TR_VSmHHYYxDdRMdt",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 27.3,
|
||||
"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: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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+391
@@ -0,0 +1,391 @@
|
||||
{
|
||||
"status": "fail",
|
||||
"startedAt": "2026-06-05T21:57:48.945Z",
|
||||
"endedAt": "2026-06-05T21:58:12.868Z",
|
||||
"platform": "win32",
|
||||
"arch": "x64",
|
||||
"config": {
|
||||
"url": "ws://100.79.83.54:17880",
|
||||
"serverApiUrl": "http://100.79.83.54:17880",
|
||||
"apiKey": "devkey",
|
||||
"room": "fluxer-webrtc-harness-1272-581b0bd8-4044-45a9-bb0d-695ca988d59c",
|
||||
"externalTokens": false,
|
||||
"publisherIdentity": "fluxer-native-publisher-1272",
|
||||
"secondaryPublisherIdentity": "fluxer-native-publisher-2-1272",
|
||||
"subscriberIdentity": "fluxer-native-subscriber-1272",
|
||||
"required": true,
|
||||
"strict": true,
|
||||
"timeoutMs": 30000,
|
||||
"connectTimeoutMs": 30000,
|
||||
"disconnectTimeoutMs": 10000,
|
||||
"probeTimeoutMs": 1500,
|
||||
"durationMs": 20000,
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"expectedWidth": 1280,
|
||||
"expectedHeight": 720,
|
||||
"fps": 30,
|
||||
"minFpsRatio": 0.95,
|
||||
"maxFrameGapMs": 250,
|
||||
"maxAudioFrameGapMs": 250,
|
||||
"maxAvDriftMs": 80,
|
||||
"maxPacketLoss": null,
|
||||
"requireStableResolution": true,
|
||||
"videoPattern": "gradient",
|
||||
"videoInput": "bgra",
|
||||
"subscriberVideoQuality": "high",
|
||||
"screenCodecs": ["h264"],
|
||||
"expectedScreenCodecs": ["h264"],
|
||||
"codec": "h264",
|
||||
"expectedScreenCodec": "video/H264",
|
||||
"secondaryPublisher": false,
|
||||
"secondaryPublisherCodec": "h264",
|
||||
"secondaryPublisherCodecExplicit": false,
|
||||
"expectedSecondaryPublisherCodec": "video/H264",
|
||||
"expectedSecondaryPublisherCodecExplicit": false,
|
||||
"screenSimulcast": false,
|
||||
"secondaryPublisherScreenSimulcast": false,
|
||||
"adaptiveSend": true,
|
||||
"minVideoFps": 15,
|
||||
"minResolutionScale": 0.5,
|
||||
"maxAudioBufferMs": 750,
|
||||
"secondaryPublisherMicrophone": 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:\\f\\fluxer_desktop\\native\\webrtc-sender\\native-media-reports\\windows-mx450-livekit-h264-single-egress-adaptive-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 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/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 6.59 below 28.5; max video frame gap 552ms exceeds 250ms",
|
||||
"hardwareEncoder": {
|
||||
"available": false,
|
||||
"backend": "none",
|
||||
"compiled": true,
|
||||
"runtime": false,
|
||||
"codecs": [],
|
||||
"zeroCopy": false,
|
||||
"nativeInputs": [],
|
||||
"reason": "no_supported_devices",
|
||||
"detail": "missing NVENC encode session (checked 1 CUDA device; last status NV_ENC_ERR_UNSUPPORTED_DEVICE (2))"
|
||||
},
|
||||
"metrics": {
|
||||
"inboundAudioFrames": 4315,
|
||||
"inboundVideoFrames": 136,
|
||||
"strictAudioFrames": 199,
|
||||
"strictVideoFrames": 132,
|
||||
"videoCallbacks": 135,
|
||||
"videoBytes": 186624000,
|
||||
"receivedFps": 6.59,
|
||||
"requiredFps": 28.5,
|
||||
"maxVideoFrameGapMs": 552,
|
||||
"maxAudioFrameGapMs": 112,
|
||||
"maxVideoFrameGapOverallMs": 557,
|
||||
"maxAudioFrameGapOverallMs": 112,
|
||||
"avDriftMs": 22,
|
||||
"maxObservedPacketLoss": 0,
|
||||
"maxObservedPacketLossDelta": 0,
|
||||
"videoResolutionCounts": {
|
||||
"1280x720": 132
|
||||
},
|
||||
"videoResolutionMismatchCount": 0,
|
||||
"droppedVideoFrameCallbacks": 0,
|
||||
"publisherVideoPump": {
|
||||
"input": "bgra",
|
||||
"pattern": "gradient",
|
||||
"targetFps": 30,
|
||||
"startedAtMs": 1780696671200,
|
||||
"stoppedAtMs": null,
|
||||
"framesPushed": 650,
|
||||
"framesRejected": 0,
|
||||
"errors": 0,
|
||||
"maxPushGapMs": 64,
|
||||
"lastPushAtMs": 1780696692841,
|
||||
"elapsedMs": 21772,
|
||||
"producedFps": 29.85
|
||||
},
|
||||
"secondaryPublisherVideoPump": null,
|
||||
"serverPublishing": {
|
||||
"fetchedAtMs": 1780696672853,
|
||||
"error": null,
|
||||
"participants": [
|
||||
{
|
||||
"identity": "fluxer-native-publisher-1272",
|
||||
"trackCount": 3,
|
||||
"tracks": [
|
||||
{
|
||||
"sid": "TR_AM3TQzwbFTcoXT",
|
||||
"name": "mic",
|
||||
"kind": "audio",
|
||||
"source": "microphone",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_AsW4JLnmWG6cce",
|
||||
"name": "screen-audio",
|
||||
"kind": "audio",
|
||||
"source": "screenshareAudio",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_VSxrpLn4EJfUEg",
|
||||
"name": "screen",
|
||||
"kind": "video",
|
||||
"source": "screenshare",
|
||||
"mimeType": "video/H264",
|
||||
"muted": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"identity": "fluxer-native-subscriber-1272",
|
||||
"trackCount": 0,
|
||||
"tracks": []
|
||||
}
|
||||
]
|
||||
},
|
||||
"lastVideoMeta": {
|
||||
"participantSid": "PA_7EoucgabpBG8",
|
||||
"trackSid": "TR_VSxrpLn4EJfUEg",
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"timestampUs": 3306206000
|
||||
},
|
||||
"publisherStats": {
|
||||
"rttMs": 15,
|
||||
"outbound": [
|
||||
{
|
||||
"trackSid": "TR_AM3TQzwbFTcoXT",
|
||||
"source": "microphone",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 95.3,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_VSxrpLn4EJfUEg",
|
||||
"source": "screenshare",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 5106.2,
|
||||
"packetsLost": 0,
|
||||
"fps": 11,
|
||||
"codec": "video/H264"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_AsW4JLnmWG6cce",
|
||||
"source": "screenshareAudio",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 300.6,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
}
|
||||
],
|
||||
"inbound": [],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 1,
|
||||
"outgoingVideoFramesProduced": 627,
|
||||
"outgoingVideoFramesAccepted": 627,
|
||||
"outgoingVideoFramesDropped": 262,
|
||||
"outgoingVideoFramesCoalesced": 262,
|
||||
"outgoingVideoFramesCaptured": 364,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 17.42,
|
||||
"outgoingVideoTargetFps": 15,
|
||||
"outgoingVideoMaxQueueAgeMs": 35,
|
||||
"outgoingVideoMaxPushLatencyMs": 42,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 63,
|
||||
"adaptiveSendTier": "fps15",
|
||||
"adaptiveSendReason": "encoderEgressPressure"
|
||||
}
|
||||
},
|
||||
"secondaryPublisherStats": null,
|
||||
"subscriberStats": {
|
||||
"rttMs": 18,
|
||||
"outbound": [],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_7EoucgabpBG8",
|
||||
"trackSid": "TR_AsW4JLnmWG6cce",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 296.3,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 6,
|
||||
"audioLevel": 0.336,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_7EoucgabpBG8",
|
||||
"trackSid": "TR_AM3TQzwbFTcoXT",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 97.1,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 7,
|
||||
"audioLevel": 0.326,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_7EoucgabpBG8",
|
||||
"trackSid": "TR_VSxrpLn4EJfUEg",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 5397.8,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 48,
|
||||
"codec": "video/H264"
|
||||
}
|
||||
],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 0,
|
||||
"outgoingVideoFramesProduced": 0,
|
||||
"outgoingVideoFramesAccepted": 0,
|
||||
"outgoingVideoFramesDropped": 0,
|
||||
"outgoingVideoFramesCoalesced": 0,
|
||||
"outgoingVideoFramesCaptured": 0,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 0,
|
||||
"outgoingVideoTargetFps": 0,
|
||||
"outgoingVideoMaxQueueAgeMs": 0,
|
||||
"outgoingVideoMaxPushLatencyMs": 0,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 0,
|
||||
"adaptiveSendTier": "idle",
|
||||
"adaptiveSendReason": "notPublishing"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+246
@@ -0,0 +1,246 @@
|
||||
{
|
||||
"status": "fail",
|
||||
"startedAt": "2026-06-05T22:00:49.164Z",
|
||||
"endedAt": "2026-06-05T22:00:50.336Z",
|
||||
"platform": "win32",
|
||||
"arch": "x64",
|
||||
"config": {
|
||||
"url": "ws://100.79.83.54:17880",
|
||||
"serverApiUrl": "http://100.79.83.54:17880",
|
||||
"apiKey": "devkey",
|
||||
"room": "fluxer-webrtc-harness-3456-3aa0da22-e543-4846-a980-1ef479694d1f",
|
||||
"externalTokens": false,
|
||||
"publisherIdentity": "fluxer-native-publisher-3456",
|
||||
"secondaryPublisherIdentity": "fluxer-native-publisher-2-3456",
|
||||
"subscriberIdentity": "fluxer-native-subscriber-3456",
|
||||
"required": true,
|
||||
"strict": false,
|
||||
"timeoutMs": 30000,
|
||||
"connectTimeoutMs": 30000,
|
||||
"disconnectTimeoutMs": 10000,
|
||||
"probeTimeoutMs": 1500,
|
||||
"durationMs": 0,
|
||||
"width": 640,
|
||||
"height": 360,
|
||||
"expectedWidth": 640,
|
||||
"expectedHeight": 360,
|
||||
"fps": 15,
|
||||
"minFpsRatio": 0,
|
||||
"maxFrameGapMs": 0,
|
||||
"maxAudioFrameGapMs": 0,
|
||||
"maxAvDriftMs": 0,
|
||||
"maxPacketLoss": null,
|
||||
"requireStableResolution": false,
|
||||
"videoPattern": "gradient",
|
||||
"videoInput": "bgra",
|
||||
"subscriberVideoQuality": null,
|
||||
"screenCodecs": ["hevc"],
|
||||
"expectedScreenCodecs": ["hevc"],
|
||||
"codec": "hevc",
|
||||
"expectedScreenCodec": "video/H265",
|
||||
"secondaryPublisher": false,
|
||||
"secondaryPublisherCodec": "hevc",
|
||||
"secondaryPublisherCodecExplicit": false,
|
||||
"expectedSecondaryPublisherCodec": "video/H265",
|
||||
"expectedSecondaryPublisherCodecExplicit": false,
|
||||
"screenSimulcast": true,
|
||||
"secondaryPublisherScreenSimulcast": true,
|
||||
"adaptiveSend": true,
|
||||
"minVideoFps": 15,
|
||||
"minResolutionScale": 0.5,
|
||||
"maxAudioBufferMs": 750,
|
||||
"secondaryPublisherMicrophone": true,
|
||||
"secondaryPublisherScreenAudio": false,
|
||||
"maxBitrateBps": 400000,
|
||||
"sampleRate": 48000,
|
||||
"channels": 1,
|
||||
"audioChunkMs": 20,
|
||||
"microphone": true,
|
||||
"screenAudio": false,
|
||||
"dataPacket": false,
|
||||
"subscriptionCycle": false,
|
||||
"validateServerPublishing": false,
|
||||
"camera": false,
|
||||
"cameraDeviceId": null,
|
||||
"expectedCameraCodec": null,
|
||||
"expectedHardwareEncoder": null,
|
||||
"reportPath": "C:\\f\\fluxer_desktop\\native\\webrtc-sender\\native-media-reports\\windows-mx450-livekit-hevc-failfast-20260605.json",
|
||||
"verbose": false,
|
||||
"scenarioName": "codec-hevc",
|
||||
"apiSecret": "<redacted>",
|
||||
"e2eeKey": null,
|
||||
"publisherToken": null,
|
||||
"secondaryPublisherToken": null,
|
||||
"subscriberToken": null
|
||||
},
|
||||
"checks": [
|
||||
{
|
||||
"name": "publisher connected",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "subscriber connected",
|
||||
"pass": true
|
||||
},
|
||||
{
|
||||
"name": "publisher local screenshare publication",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote screenshare subscription",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video frames >= 3",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber video frame callback",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound screenshare stats",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video stats",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound video stats count >= 1",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber video resolution 640x360",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber aggregate inbound audio frames >= 3",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio stats count >= 1",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "publisher local microphone publication",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber remote microphone subscription",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound audio frames >= 3",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "publisher outbound microphone stats",
|
||||
"pass": false
|
||||
},
|
||||
{
|
||||
"name": "subscriber inbound 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 NVENC encode session (checked 1 CUDA device; last status NV_ENC_ERR_UNSUPPORTED_DEVICE (2))",
|
||||
"hardwareEncoder": {
|
||||
"available": false,
|
||||
"backend": "none",
|
||||
"compiled": true,
|
||||
"runtime": false,
|
||||
"codecs": [],
|
||||
"zeroCopy": false,
|
||||
"nativeInputs": [],
|
||||
"reason": "no_supported_devices",
|
||||
"detail": "missing NVENC encode session (checked 1 CUDA device; last status NV_ENC_ERR_UNSUPPORTED_DEVICE (2))"
|
||||
},
|
||||
"metrics": {
|
||||
"inboundAudioFrames": 0,
|
||||
"inboundVideoFrames": 0,
|
||||
"strictAudioFrames": 0,
|
||||
"strictVideoFrames": 0,
|
||||
"videoCallbacks": 0,
|
||||
"videoBytes": 0,
|
||||
"receivedFps": 0,
|
||||
"requiredFps": null,
|
||||
"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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+391
@@ -0,0 +1,391 @@
|
||||
{
|
||||
"status": "pass",
|
||||
"startedAt": "2026-06-05T22:00:19.291Z",
|
||||
"endedAt": "2026-06-05T22:00:37.423Z",
|
||||
"platform": "win32",
|
||||
"arch": "x64",
|
||||
"config": {
|
||||
"url": "ws://100.79.83.54:17880",
|
||||
"serverApiUrl": "http://100.79.83.54:17880",
|
||||
"apiKey": "devkey",
|
||||
"room": "fluxer-webrtc-harness-6872-db238db9-c867-4b03-8af9-9740942a674c",
|
||||
"externalTokens": false,
|
||||
"publisherIdentity": "fluxer-native-publisher-6872",
|
||||
"secondaryPublisherIdentity": "fluxer-native-publisher-2-6872",
|
||||
"subscriberIdentity": "fluxer-native-subscriber-6872",
|
||||
"required": true,
|
||||
"strict": true,
|
||||
"timeoutMs": 30000,
|
||||
"connectTimeoutMs": 30000,
|
||||
"disconnectTimeoutMs": 10000,
|
||||
"probeTimeoutMs": 1500,
|
||||
"durationMs": 15000,
|
||||
"width": 640,
|
||||
"height": 360,
|
||||
"expectedWidth": 640,
|
||||
"expectedHeight": 360,
|
||||
"fps": 15,
|
||||
"minFpsRatio": 0.95,
|
||||
"maxFrameGapMs": 250,
|
||||
"maxAudioFrameGapMs": 250,
|
||||
"maxAvDriftMs": 150,
|
||||
"maxPacketLoss": null,
|
||||
"requireStableResolution": true,
|
||||
"videoPattern": "gradient",
|
||||
"videoInput": "bgra",
|
||||
"subscriberVideoQuality": "high",
|
||||
"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": 1200000,
|
||||
"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:\\f\\fluxer_desktop\\native\\webrtc-sender\\native-media-reports\\windows-mx450-livekit-vp8-360p15-strict-av150-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": "no_supported_devices",
|
||||
"detail": "missing NVENC encode session (checked 1 CUDA device; last status NV_ENC_ERR_UNSUPPORTED_DEVICE (2))"
|
||||
},
|
||||
"metrics": {
|
||||
"inboundAudioFrames": 3201,
|
||||
"inboundVideoFrames": 236,
|
||||
"strictAudioFrames": 150,
|
||||
"strictVideoFrames": 221,
|
||||
"videoCallbacks": 235,
|
||||
"videoBytes": 81216000,
|
||||
"receivedFps": 14.71,
|
||||
"requiredFps": 14.25,
|
||||
"maxVideoFrameGapMs": 135,
|
||||
"maxAudioFrameGapMs": 104,
|
||||
"maxVideoFrameGapOverallMs": 135,
|
||||
"maxAudioFrameGapOverallMs": 104,
|
||||
"avDriftMs": 15,
|
||||
"maxObservedPacketLoss": 0,
|
||||
"maxObservedPacketLossDelta": 0,
|
||||
"videoResolutionCounts": {
|
||||
"640x360": 221
|
||||
},
|
||||
"videoResolutionMismatchCount": 0,
|
||||
"droppedVideoFrameCallbacks": 0,
|
||||
"publisherVideoPump": {
|
||||
"input": "bgra",
|
||||
"pattern": "gradient",
|
||||
"targetFps": 15,
|
||||
"startedAtMs": 1780696821343,
|
||||
"stoppedAtMs": null,
|
||||
"framesPushed": 242,
|
||||
"framesRejected": 0,
|
||||
"errors": 0,
|
||||
"maxPushGapMs": 81,
|
||||
"lastPushAtMs": 1780696837414,
|
||||
"elapsedMs": 16181,
|
||||
"producedFps": 14.96
|
||||
},
|
||||
"secondaryPublisherVideoPump": null,
|
||||
"serverPublishing": {
|
||||
"fetchedAtMs": 1780696822415,
|
||||
"error": null,
|
||||
"participants": [
|
||||
{
|
||||
"identity": "fluxer-native-publisher-6872",
|
||||
"trackCount": 3,
|
||||
"tracks": [
|
||||
{
|
||||
"sid": "TR_AMZncs3mMUV8XL",
|
||||
"name": "mic",
|
||||
"kind": "audio",
|
||||
"source": "microphone",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_As8q693K2N6RV2",
|
||||
"name": "screen-audio",
|
||||
"kind": "audio",
|
||||
"source": "screenshareAudio",
|
||||
"mimeType": "audio/red",
|
||||
"muted": false
|
||||
},
|
||||
{
|
||||
"sid": "TR_VScEzJLWokWJcx",
|
||||
"name": "screen",
|
||||
"kind": "video",
|
||||
"source": "screenshare",
|
||||
"mimeType": "video/VP8",
|
||||
"muted": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"identity": "fluxer-native-subscriber-6872",
|
||||
"trackCount": 0,
|
||||
"tracks": []
|
||||
}
|
||||
]
|
||||
},
|
||||
"lastVideoMeta": {
|
||||
"participantSid": "PA_EeCfpcRvJPEF",
|
||||
"trackSid": "TR_VScEzJLWokWJcx",
|
||||
"width": 640,
|
||||
"height": 360,
|
||||
"timestampUs": 3450776000
|
||||
},
|
||||
"publisherStats": {
|
||||
"rttMs": 4,
|
||||
"outbound": [
|
||||
{
|
||||
"trackSid": "TR_As8q693K2N6RV2",
|
||||
"source": "screenshareAudio",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 263.5,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_VScEzJLWokWJcx",
|
||||
"source": "screenshare",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 1233.4,
|
||||
"packetsLost": 0,
|
||||
"fps": 15,
|
||||
"codec": "video/VP8"
|
||||
},
|
||||
{
|
||||
"trackSid": "TR_AMZncs3mMUV8XL",
|
||||
"source": "microphone",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 97.9,
|
||||
"packetsLost": 0,
|
||||
"codec": "audio/opus"
|
||||
}
|
||||
],
|
||||
"inbound": [],
|
||||
"send": {
|
||||
"outgoingVideoQueueDepth": 1,
|
||||
"outgoingVideoFramesProduced": 241,
|
||||
"outgoingVideoFramesAccepted": 241,
|
||||
"outgoingVideoFramesDropped": 4,
|
||||
"outgoingVideoFramesCoalesced": 4,
|
||||
"outgoingVideoFramesCaptured": 236,
|
||||
"outgoingVideoCaptureFailures": 0,
|
||||
"outgoingVideoEffectiveFps": 14.71,
|
||||
"outgoingVideoTargetFps": 15,
|
||||
"outgoingVideoMaxQueueAgeMs": 67,
|
||||
"outgoingVideoMaxPushLatencyMs": 69,
|
||||
"outgoingAudioBufferTargetMs": 200,
|
||||
"outgoingAudioBufferMaxMs": 750,
|
||||
"outgoingAudioUnderruns": 0,
|
||||
"outgoingAudioRebuffers": 0,
|
||||
"outgoingAudioMaxFrameGapMs": 36,
|
||||
"adaptiveSendTier": "full",
|
||||
"adaptiveSendReason": "stable"
|
||||
}
|
||||
},
|
||||
"secondaryPublisherStats": null,
|
||||
"subscriberStats": {
|
||||
"rttMs": 4,
|
||||
"outbound": [],
|
||||
"inbound": [
|
||||
{
|
||||
"participantSid": "PA_EeCfpcRvJPEF",
|
||||
"trackSid": "TR_As8q693K2N6RV2",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 263.1,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 3,
|
||||
"audioLevel": 0.318,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_EeCfpcRvJPEF",
|
||||
"trackSid": "TR_AMZncs3mMUV8XL",
|
||||
"kind": "audio",
|
||||
"bitrateKbps": 97.8,
|
||||
"packetsLost": 0,
|
||||
"jitterMs": 2,
|
||||
"audioLevel": 0.307,
|
||||
"codec": "audio/opus"
|
||||
},
|
||||
{
|
||||
"participantSid": "PA_EeCfpcRvJPEF",
|
||||
"trackSid": "TR_VScEzJLWokWJcx",
|
||||
"kind": "video",
|
||||
"bitrateKbps": 1231.8,
|
||||
"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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user