mirror of
https://github.com/mofeng-git/One-KVM.git
synced 2025-12-12 17:20:30 +08:00
web: optional audio transmitting
This commit is contained in:
parent
a68eb4ed2d
commit
0e9b87ad61
@ -74,6 +74,12 @@ export function Streamer() {
|
|||||||
$("stream-video").muted = !value;
|
$("stream-video").muted = !value;
|
||||||
$("stream-video").volume = value / 100;
|
$("stream-video").volume = value / 100;
|
||||||
$("stream-audio-volume-value").innerHTML = value + "%";
|
$("stream-audio-volume-value").innerHTML = value + "%";
|
||||||
|
if (__streamer.getMode() === "janus") {
|
||||||
|
let allow_audio = !$("stream-video").muted;
|
||||||
|
if (__streamer.isAudioAllowed() !== allow_audio) {
|
||||||
|
__resetStream();
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
tools.el.setOnClick($("stream-screenshot-button"), __clickScreenshotButton);
|
tools.el.setOnClick($("stream-screenshot-button"), __clickScreenshotButton);
|
||||||
@ -122,6 +128,9 @@ export function Streamer() {
|
|||||||
);
|
);
|
||||||
let mode = (__janus_enabled ? tools.storage.get("stream.mode", "janus") : "mjpeg");
|
let mode = (__janus_enabled ? tools.storage.get("stream.mode", "janus") : "mjpeg");
|
||||||
tools.radio.clickValue("stream-mode-radio", mode);
|
tools.radio.clickValue("stream-mode-radio", mode);
|
||||||
|
if (!__janus_enabled) {
|
||||||
|
tools.feature.setEnabled($("stream-audio"), false); // Enabling in stream_janus.js
|
||||||
|
}
|
||||||
self.setState(__state);
|
self.setState(__state);
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -239,22 +248,29 @@ export function Streamer() {
|
|||||||
tools.slider.setValue(el, value);
|
tools.slider.setValue(el, value);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var __resetStream = function(mode=null) {
|
||||||
|
if (mode === null) {
|
||||||
|
mode = __streamer.getMode();
|
||||||
|
}
|
||||||
|
__streamer.stopStream();
|
||||||
|
if (mode === "janus") {
|
||||||
|
__streamer = new JanusStreamer(__setActive, __setInactive, __setInfo, !$("stream-video").muted);
|
||||||
|
} else { // mjpeg
|
||||||
|
__streamer = new MjpegStreamer(__setActive, __setInactive, __setInfo);
|
||||||
|
tools.feature.setEnabled($("stream-audio"), false); // Enabling in stream_janus.js
|
||||||
|
}
|
||||||
|
if (wm.isWindowVisible($("stream-window"))) {
|
||||||
|
__streamer.ensureStream(__state);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
var __clickModeRadio = function() {
|
var __clickModeRadio = function() {
|
||||||
let mode = tools.radio.getValue("stream-mode-radio");
|
let mode = tools.radio.getValue("stream-mode-radio");
|
||||||
tools.storage.set("stream.mode", mode);
|
tools.storage.set("stream.mode", mode);
|
||||||
if (mode !== __streamer.getMode()) {
|
if (mode !== __streamer.getMode()) {
|
||||||
tools.hidden.setVisible($("stream-image"), (mode !== "janus"));
|
tools.hidden.setVisible($("stream-image"), (mode !== "janus"));
|
||||||
tools.hidden.setVisible($("stream-video"), (mode === "janus"));
|
tools.hidden.setVisible($("stream-video"), (mode === "janus"));
|
||||||
if (mode === "janus") {
|
__resetStream(mode);
|
||||||
__streamer.stopStream();
|
|
||||||
__streamer = new JanusStreamer(__setActive, __setInactive, __setInfo);
|
|
||||||
} else { // mjpeg
|
|
||||||
__streamer.stopStream();
|
|
||||||
__streamer = new MjpegStreamer(__setActive, __setInactive, __setInfo);
|
|
||||||
}
|
|
||||||
if (wm.isWindowVisible($("stream-window"))) {
|
|
||||||
__streamer.ensureStream(__state);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -270,11 +286,7 @@ export function Streamer() {
|
|||||||
var __clickResetButton = function() {
|
var __clickResetButton = function() {
|
||||||
wm.confirm("Are you sure you want to reset stream?").then(function (ok) {
|
wm.confirm("Are you sure you want to reset stream?").then(function (ok) {
|
||||||
if (ok) {
|
if (ok) {
|
||||||
if (wm.isWindowVisible($("stream-window"))) {
|
__resetStream();
|
||||||
__streamer.stopStream();
|
|
||||||
__streamer.ensureStream(__state);
|
|
||||||
}
|
|
||||||
|
|
||||||
let http = tools.makeRequest("POST", "/api/streamer/reset", function() {
|
let http = tools.makeRequest("POST", "/api/streamer/reset", function() {
|
||||||
if (http.readyState === 4) {
|
if (http.readyState === 4) {
|
||||||
if (http.status !== 200) {
|
if (http.status !== 200) {
|
||||||
|
|||||||
@ -29,7 +29,7 @@ import {tools, $} from "../tools.js";
|
|||||||
var _Janus = null;
|
var _Janus = null;
|
||||||
|
|
||||||
|
|
||||||
export function JanusStreamer(__setActive, __setInactive, __setInfo) {
|
export function JanusStreamer(__setActive, __setInactive, __setInfo, __allow_audio) {
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
var __stop = false;
|
var __stop = false;
|
||||||
@ -45,7 +45,9 @@ export function JanusStreamer(__setActive, __setInactive, __setInfo) {
|
|||||||
var __state = null;
|
var __state = null;
|
||||||
var __frames = 0;
|
var __frames = 0;
|
||||||
|
|
||||||
self.getName = () => "H.264";
|
self.isAudioAllowed = () => __allow_audio;
|
||||||
|
|
||||||
|
self.getName = () => (__allow_audio ? "H.264 + Audio" : "H.264");
|
||||||
self.getMode = () => "janus";
|
self.getMode = () => "janus";
|
||||||
|
|
||||||
self.getResolution = function() {
|
self.getResolution = function() {
|
||||||
@ -124,7 +126,6 @@ export function JanusStreamer(__setActive, __setInactive, __setInfo) {
|
|||||||
__handle.webrtcStuff.remoteStream = null;
|
__handle.webrtcStuff.remoteStream = null;
|
||||||
}
|
}
|
||||||
$("stream-video").srcObject = null;
|
$("stream-video").srcObject = null;
|
||||||
__setAudioEnabled(false);
|
|
||||||
if (__janus !== null) {
|
if (__janus !== null) {
|
||||||
__janus.destroy();
|
__janus.destroy();
|
||||||
}
|
}
|
||||||
@ -179,7 +180,7 @@ export function JanusStreamer(__setActive, __setInactive, __setInfo) {
|
|||||||
__setInactive();
|
__setInactive();
|
||||||
__setInfo(false, false, "");
|
__setInfo(false, false, "");
|
||||||
} else if (msg.result.status === "features") {
|
} else if (msg.result.status === "features") {
|
||||||
__setAudioEnabled(msg.result.features.audio);
|
tools.feature.setEnabled($("stream-audio"), msg.result.features.audio);
|
||||||
}
|
}
|
||||||
} else if (msg.error_code || msg.error) {
|
} else if (msg.error_code || msg.error) {
|
||||||
__logError("Got uStreamer error message:", msg.error_code, "-", msg.error);
|
__logError("Got uStreamer error message:", msg.error_code, "-", msg.error);
|
||||||
@ -241,10 +242,6 @@ export function JanusStreamer(__setActive, __setInactive, __setInfo) {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
var __setAudioEnabled = function(enabled) {
|
|
||||||
tools.feature.setEnabled($("stream-audio"), enabled);
|
|
||||||
};
|
|
||||||
|
|
||||||
var __startInfoInterval = function() {
|
var __startInfoInterval = function() {
|
||||||
__stopInfoInterval();
|
__stopInfoInterval();
|
||||||
__setActive();
|
__setActive();
|
||||||
@ -292,9 +289,9 @@ export function JanusStreamer(__setActive, __setInactive, __setInfo) {
|
|||||||
|
|
||||||
var __sendWatch = function() {
|
var __sendWatch = function() {
|
||||||
if (__handle) {
|
if (__handle) {
|
||||||
__logInfo("Sending WATCH + FEATURES ...");
|
__logInfo(`Sending WATCH(audio=${__allow_audio}) + FEATURES ...`);
|
||||||
__handle.send({"message": {"request": "features"}});
|
__handle.send({"message": {"request": "features"}});
|
||||||
__handle.send({"message": {"request": "watch", "params": {"audio": true}}});
|
__handle.send({"message": {"request": "watch", "params": {"audio": __allow_audio}}});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user