From 94577a6f29c04e104a535de8e22091a68853ddf8 Mon Sep 17 00:00:00 2001 From: henryruhs Date: Fri, 27 Mar 2026 09:49:11 +0100 Subject: [PATCH] extend html file --- test_stream.html | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/test_stream.html b/test_stream.html index 8490d6e1..fc4e61f1 100644 --- a/test_stream.html +++ b/test_stream.html @@ -133,6 +133,7 @@
3 Video Source
+
@@ -464,6 +465,7 @@ async function createSession() { markDone('dotSession'); document.getElementById('sourceBox').classList.remove('disabled'); document.getElementById('btnCamera').disabled = false; + document.getElementById('btnScreen').disabled = false; document.getElementById('btnFile').disabled = false; document.getElementById('faceDebugger').disabled = false; document.getElementById('pipToggle').disabled = false; @@ -588,6 +590,45 @@ async function startCamera() { } } +async function startScreen() { + try { + var displayStream = await navigator.mediaDevices.getDisplayMedia({ video: { cursor: 'always' }, audio: true }); + var audioStream = null; + + try { + audioStream = await navigator.mediaDevices.getUserMedia({ audio: true }); + } catch (e) { + log('mic not available, screen audio only', 'warn'); + } + + var tracks = displayStream.getVideoTracks(); + + if (audioStream) { + audioStream.getAudioTracks().forEach(function(track) { displayStream.addTrack(track); }); + } + + localStream = displayStream; + inputVideoSource = 'screen'; + document.getElementById('inputVideo').srcObject = displayStream; + log('screen: ' + tracks[0].label, 'ok'); + + tracks[0].addEventListener('ended', function() { + log('screen sharing stopped', 'warn'); + localStream = null; + document.getElementById('inputVideo').srcObject = null; + + if (streaming) { + disconnect(); + } + }); + + markDone('dotVideo'); + checkConnectReady(); + } catch (e) { + log('screen error: ' + e.message, 'error'); + } +} + document.getElementById('videoFile').addEventListener('change', function(event) { var file = event.target.files[0]; if (!file) return;