From 08b7c577d7f00e037b84f9aca6c714edc4774a07 Mon Sep 17 00:00:00 2001 From: Maxim Devaev Date: Wed, 1 Jun 2022 09:32:45 +0300 Subject: [PATCH] webrtc audio draft --- configs/os/sysusers.conf | 1 + web/kvm/index.html | 7 +++++++ web/kvm/navbar-system.pug | 4 ++++ web/share/js/kvm/stream.js | 12 ++++++++++++ 4 files changed, 24 insertions(+) diff --git a/configs/os/sysusers.conf b/configs/os/sysusers.conf index fefb84f4..e939ad88 100644 --- a/configs/os/sysusers.conf +++ b/configs/os/sysusers.conf @@ -21,6 +21,7 @@ m kvmd systemd-journal m kvmd-ipmi kvmd m kvmd-vnc kvmd m kvmd-janus kvmd +m kvmd-janus audio m kvmd-nginx kvmd m kvmd-nginx kvmd-janus diff --git a/web/kvm/index.html b/web/kvm/index.html index 8fcbf81f..3343f07e 100644 --- a/web/kvm/index.html +++ b/web/kvm/index.html @@ -219,6 +219,13 @@ + + Audio volume: + + + + +
diff --git a/web/kvm/navbar-system.pug b/web/kvm/navbar-system.pug index 4bbb517c..55ec99ab 100644 --- a/web/kvm/navbar-system.pug +++ b/web/kvm/navbar-system.pug @@ -46,6 +46,10 @@ li(class="right") label(for="stream-mode-radio-mjpeg") MJPEG / HTTP input(type="radio" id="stream-mode-radio-janus" name="stream-mode-radio" value="janus") label(for="stream-mode-radio-janus") H.264 / WebRTC + tr(id="stream-audio", class="feature-disabled") + td Audio volume: + td #[input(type="range" id="stream-audio-volume-slider" class="slider")] + td(id="stream-audio-volume-value" class="value" style="min-width: 30px; max-width:30px") hr div(class="buttons buttons-row") button(data-force-hide-menu data-show-window="stream-window" class="row33") • Show stream diff --git a/web/share/js/kvm/stream.js b/web/share/js/kvm/stream.js index 4d432fb4..e2e03715 100644 --- a/web/share/js/kvm/stream.js +++ b/web/share/js/kvm/stream.js @@ -124,6 +124,7 @@ function _JanusStreamer(__setActive, __setInactive, __setInfo) { __handle.webrtcStuff.remoteStream = null; } $("stream-video").srcObject = null; + __setAudioEnabled(false); if (__janus !== null) { __janus.destroy(); } @@ -214,6 +215,7 @@ function _JanusStreamer(__setActive, __setInactive, __setInfo) { onremotestream: function(stream) { __logInfo("Got a remote stream:", stream); + __setAudioEnabled(!!stream.getAudioTracks()); _Janus.attachMediaStream($("stream-video"), stream); __startInfoInterval(); }, @@ -225,6 +227,10 @@ function _JanusStreamer(__setActive, __setInactive, __setInfo) { }); }; + var __setAudioEnabled = function(enabled) { + tools.feature.setEnabled($("stream-audio"), enabled); + }; + var __startInfoInterval = function() { __stopInfoInterval(); __setActive(); @@ -447,6 +453,12 @@ export function Streamer() { tools.radio.setOnClick("stream-mode-radio", __clickModeRadio, false); + tools.slider.setParams($("stream-audio-volume-slider"), 0, 100, 1, 0, function(value) { + $("stream-video").muted = !value; + $("stream-video").volume = value / 100; + $("stream-audio-volume-value").innerHTML = value + "%"; + }); + tools.el.setOnClick($("stream-screenshot-button"), __clickScreenshotButton); tools.el.setOnClick($("stream-reset-button"), __clickResetButton);