From 59c37b95d55625de5037705a676104f2feffeec9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8D=E8=B6=85?= Date: Fri, 24 Jan 2025 12:13:47 +0800 Subject: [PATCH] =?UTF-8?q?=E6=91=84=E5=83=8F=E5=A4=B4=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/shared/Webcam.svelte | 35 ++++++++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/frontend/shared/Webcam.svelte b/frontend/shared/Webcam.svelte index b3dc3dc..ff9b309 100644 --- a/frontend/shared/Webcam.svelte +++ b/frontend/shared/Webcam.svelte @@ -8,6 +8,7 @@ Spinner, Microphone as Mic, VolumeMuted, + Webcam, VolumeHigh } from "@gradio/icons"; import type { I18nFormatter } from "@gradio/utils"; @@ -67,6 +68,7 @@ let volumeMuted = false let micMuted = false + let cameraOff = false const handle_volume_mute = () => { volumeMuted = !volumeMuted } @@ -77,6 +79,15 @@ track.enabled = !micMuted }) } + const handle_camera_off = () => { + cameraOff = !cameraOff + stream.getTracks().forEach(track => { + if (track.kind.includes('video')) + track.enabled = !cameraOff + }) + + } + const dispatch = createEventDispatcher<{ tick: undefined; @@ -122,6 +133,9 @@ async function access_webcam(): Promise { try { const node = show_local_video ? local_video_source : video_source; + micMuted = false + cameraOff = false + volumeMuted = false get_video_stream(include_audio, node, null, track_constraints) .then(async (local_stream) => { webcam_accessed = true; @@ -340,15 +354,26 @@ {/if} {#if include_audio === true && stream_state === "open"}
+