mirror of
https://github.com/mofeng-git/One-KVM.git
synced 2025-12-12 09:10:30 +08:00
stream refactoring, passing janus state
This commit is contained in:
parent
3aa92a87d4
commit
384b444c02
@ -125,6 +125,8 @@ export function Session() {
|
|||||||
tools.featureSetEnabled($("webterm"), has_webterm);
|
tools.featureSetEnabled($("webterm"), has_webterm);
|
||||||
$("webterm-window").show_hook = show_hook;
|
$("webterm-window").show_hook = show_hook;
|
||||||
$("webterm-window").close_hook = close_hook;
|
$("webterm-window").close_hook = close_hook;
|
||||||
|
|
||||||
|
__streamer.setJanusEnabled(state.janus && (state.janus.enabled || state.janus.started));
|
||||||
};
|
};
|
||||||
|
|
||||||
var __formatTemp = function(temp) {
|
var __formatTemp = function(temp) {
|
||||||
|
|||||||
@ -40,11 +40,13 @@ function _MjpegStreamer(set_active_callback, set_inactive_callback, set_info_cal
|
|||||||
var __timer = null;
|
var __timer = null;
|
||||||
var __timer_retries = 0;
|
var __timer_retries = 0;
|
||||||
|
|
||||||
|
var __janus_enabled = null;
|
||||||
|
|
||||||
/************************************************************************/
|
/************************************************************************/
|
||||||
|
|
||||||
self.ensureStream = function(state) {
|
self.ensureStream = function(state) {
|
||||||
if (state && state.streamer) {
|
if (state) {
|
||||||
__state = state.streamer;
|
__state = state;
|
||||||
__findId();
|
__findId();
|
||||||
if (__id.length > 0 && __id in __state.stream.clients_stat) {
|
if (__id.length > 0 && __id in __state.stream.clients_stat) {
|
||||||
__setActive();
|
__setActive();
|
||||||
@ -60,7 +62,10 @@ function _MjpegStreamer(set_active_callback, set_inactive_callback, set_info_cal
|
|||||||
|
|
||||||
self.stopStream = function() {
|
self.stopStream = function() {
|
||||||
self.ensureStream(null);
|
self.ensureStream(null);
|
||||||
$("stream-image").src = "/share/png/blank-stream.png";
|
let blank = "/share/png/blank-stream.png";
|
||||||
|
if (!String.prototype.endsWith.call($("stream-image").src, blank)) {
|
||||||
|
$("stream-image").src = blank;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
var __setActive = function() {
|
var __setActive = function() {
|
||||||
@ -145,13 +150,12 @@ export function Streamer() {
|
|||||||
|
|
||||||
/************************************************************************/
|
/************************************************************************/
|
||||||
|
|
||||||
|
var __janus_enabled = null;
|
||||||
var __mjpeg = null;
|
var __mjpeg = null;
|
||||||
|
|
||||||
var __online = false;
|
var __state = null;
|
||||||
var __resolution = {width: 640, height: 480};
|
var __resolution = {width: 640, height: 480};
|
||||||
|
|
||||||
var __state_for_invisible = null;
|
|
||||||
|
|
||||||
var __init__ = function() {
|
var __init__ = function() {
|
||||||
__mjpeg = new _MjpegStreamer(__setActive, __setInactive, __setInfo);
|
__mjpeg = new _MjpegStreamer(__setActive, __setInactive, __setInfo);
|
||||||
|
|
||||||
@ -168,34 +172,31 @@ export function Streamer() {
|
|||||||
tools.setOnClick($("stream-screenshot-button"), __clickScreenshotButton);
|
tools.setOnClick($("stream-screenshot-button"), __clickScreenshotButton);
|
||||||
tools.setOnClick($("stream-reset-button"), __clickResetButton);
|
tools.setOnClick($("stream-reset-button"), __clickResetButton);
|
||||||
|
|
||||||
$("stream-window").show_hook = function() {
|
$("stream-window").show_hook = () => __applyState(__state);
|
||||||
if (__state_for_invisible !== null) {
|
$("stream-window").close_hook = () => __applyState(null);
|
||||||
self.setState(__state_for_invisible);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/************************************************************************/
|
/************************************************************************/
|
||||||
|
|
||||||
self.setState = function(state) {
|
self.setJanusEnabled = function(enabled) {
|
||||||
if (!wm.isWindowVisible($("stream-window"))) {
|
__janus_enabled = (!!window.RTCPeerConnection && enabled);
|
||||||
if (__state_for_invisible === null) {
|
tools.info("Stream: Janus WebRTC Gateway state:", __janus_enabled);
|
||||||
__mjpeg.stopStream();
|
self.setState(__state);
|
||||||
}
|
};
|
||||||
__state_for_invisible = state;
|
|
||||||
state = null;
|
|
||||||
} else {
|
|
||||||
__state_for_invisible = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
self.setState = function(state) {
|
||||||
|
__state = state;
|
||||||
|
if (__janus_enabled !== null) {
|
||||||
|
__applyState(wm.isWindowVisible($("stream-window")) ? __state : null);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var __applyState = function(state) {
|
||||||
if (state) {
|
if (state) {
|
||||||
tools.featureSetEnabled($("stream-quality"), state.features.quality && (state.streamer === null || state.streamer.encoder.quality > 0));
|
tools.featureSetEnabled($("stream-quality"), state.features.quality && (state.streamer === null || state.streamer.encoder.quality > 0));
|
||||||
tools.featureSetEnabled($("stream-resolution"), state.features.resolution);
|
tools.featureSetEnabled($("stream-resolution"), state.features.resolution);
|
||||||
}
|
|
||||||
|
|
||||||
__online = (state && state.streamer && state.streamer.source.online);
|
if (state.streamer) {
|
||||||
|
|
||||||
if (state && state.streamer) {
|
|
||||||
if (!$("stream-quality-slider").activated) {
|
if (!$("stream-quality-slider").activated) {
|
||||||
wm.setElementEnabled($("stream-quality-slider"), true);
|
wm.setElementEnabled($("stream-quality-slider"), true);
|
||||||
if ($("stream-quality-slider").value !== state.streamer.encoder.quality) {
|
if ($("stream-quality-slider").value !== state.streamer.encoder.quality) {
|
||||||
@ -236,7 +237,11 @@ export function Streamer() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
__mjpeg.ensureStream(state);
|
__mjpeg.ensureStream(state.streamer);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
__mjpeg.stopStream();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
var __setActive = function() {
|
var __setActive = function() {
|
||||||
@ -264,7 +269,7 @@ export function Streamer() {
|
|||||||
let el_info = $("stream-info");
|
let el_info = $("stream-info");
|
||||||
if (is_active) {
|
if (is_active) {
|
||||||
let title = "Stream – ";
|
let title = "Stream – ";
|
||||||
if (!__online) {
|
if (!online) {
|
||||||
title += "no signal / ";
|
title += "no signal / ";
|
||||||
}
|
}
|
||||||
title += __makeStringResolution(__resolution);
|
title += __makeStringResolution(__resolution);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user