This commit is contained in:
mofeng-git
2025-02-01 12:19:02 +00:00
parent 06a64725be
commit c711683c63
18 changed files with 109 additions and 1416 deletions

View File

@@ -150,5 +150,6 @@
"msd-message-rw-enabled":"Read-write mode is enabled",
"msd-message-downloads":"The image is being downloaded from One-KVM",
"msd-message-another-user-uploads":"Another user uploads an image",
"page-full-tab-stream-switch":"Expand for the entire tab by default"
}
"page-full-tab-stream-switch":"Expand for the entire tab by default",
"hid-keyboard-bad-link-switch":"Bad link mode (release keys immediately)"
}

View File

@@ -2,7 +2,7 @@
"username": "用户名: ",
"password": "密码: ",
"2fa_code": "2FA 验证: ",
"if_enabled": "如果",
"if_enabled": "如果没有请留空",
"login": "登录",
"select_language": "选择语言: ",
"chinese": "简体中文",
@@ -29,7 +29,7 @@
"ipmi_text3":"<b>不建议</b>为 KVMD 和 IPMI 用户使用相同的密码,或者直接关闭 IPMI。如有需要可以通过 curl 直接使用 KVMD API。下面是一些示例",
"kvm_text1":"关于",
"kvm_text2":"//<a href=\"https://github.com/pikvm/pikvm?tab=readme-ov-file#special-thanks\">这些人</a>向 PiKVM 项目捐款并支持其工作,非常感谢他们的帮助。<br>//如果您也想支持 PiKVM ,可以在 <a target=\"_blank\" href=\"https://www.patreon.com/pikvm\"> Patreon</a> 或 <a target=\"_blank\" href=\"https://paypal.me/pikvm\"> PayPal 上捐款</a>。<br><br>//<a href=\"https://one-kvm.mofeng.run/thanks/#_2\">这些人</a>向 One-KVM 项目捐款并支持其工作,非常感谢他们的帮助。<br>//如果您也想支持 One-KVM ,可以在 <a target=\"_blank\" href=\"https://afdian.com/a/silentwind\"> 爱发电 </a>上捐款</a>。",
"kvm_text2":"//<a href=\"https://one-kvm.mofeng.run/thanks/#_2\">这些人</a>向 One-KVM 项目赞助并支持其工作,非常感谢他们的帮助。<br>//如果您也想支持 One-KVM ,可以在 <a target=\"_blank\" href=\"https://afdian.com/a/silentwind\"> 爱发电 </a>上捐款</a>。<br><br>//<a href=\"https://github.com/pikvm/pikvm?tab=readme-ov-file#special-thanks\">这些人</a>向 PiKVM 项目赞助并支持其工作,非常感谢他们的帮助。<br>//如果您也想支持 PiKVM ,可以在 <a target=\"_blank\" href=\"https://www.patreon.com/pikvm\"> Patreon</a> 或 <a target=\"_blank\" href=\"https://paypal.me/pikvm\"> PayPal 上捐款</a>。",
"kvm_text3":"系统",
"kvm_text4":"运行设置 &amp; 工具",
"kvm_text5":"终端",
@@ -152,5 +152,6 @@
"msd-message-rw-enabled":"读写模式已启用",
"msd-message-downloads":"正在从 One-KVM 下载镜像",
"msd-message-another-user-uploads":"另一个用户正在上传镜像",
"page-full-tab-stream-switch":"自动全屏视频窗口"
}
"page-full-tab-stream-switch":"自动全屏视频窗口",
"hid-keyboard-bad-link-switch":"故障链接模式(立即释放按键)"
}

View File

@@ -82,10 +82,10 @@ function __loadKvmdInfo() {
if (info.meta !== null && info.meta.server && info.meta.server.host) {
$("kvmd-meta-server-host").innerHTML = info.meta.server.host;
document.title = `PiKVM Index: ${info.meta.server.host}`;
document.title = `One-KVM Index: ${info.meta.server.host}`;
} else {
$("kvmd-meta-server-host").innerHTML = "";
document.title = "PiKVM Index";
document.title = "One-KVM Index";
}
} else if (http.status === 401 || http.status === 403) {
document.location.href = "/login";

View File

@@ -3,6 +3,7 @@
# KVMD - The main PiKVM daemon. #
# #
# Copyright (C) 2018-2024 Maxim Devaev <mdevaev@gmail.com> #
# Copyright (C) 2023-2025 SilentWind <mofeng654321@hotmail.com> #
# #
# This program is free software: you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #
@@ -35,7 +36,7 @@ export function main() {
tools.storage.bindSimpleSwitch($("page-close-ask-switch"), "page.close.ask", true, function(value) {
if (value) {
window.onbeforeunload = function(event) {
let text = "Are you sure you want to close PiKVM session?";
let text = "Are you sure you want to close One-KVM session?";
if (event) {
event.returnValue = text;
}

View File

@@ -3,6 +3,7 @@
# KVMD - The main PiKVM daemon. #
# #
# Copyright (C) 2018-2024 Maxim Devaev <mdevaev@gmail.com> #
# Copyright (C) 2023-2025 SilentWind <mofeng654321@hotmail.com> #
# #
# This program is free software: you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #
@@ -84,10 +85,10 @@ export function Session() {
if (state.server && state.server.host) {
$("kvmd-meta-server-host").innerText = `Server: ${state.server.host}`;
document.title = `PiKVM Session: ${state.server.host}`;
document.title = `One-KVM Session: ${state.server.host}`;
} else {
$("kvmd-meta-server-host").innerText = "";
document.title = "PiKVM Session";
document.title = "One-KVM Session";
}
if (state.tips && state.tips.left) {

View File

@@ -117,6 +117,11 @@ export function Streamer() {
//hidden stream-record-stop-button
document.getElementById('stream-record-stop-button').disabled = true;
// 修改这里:设置默认模式为 mjpeg
let defaultMode = "mjpeg";
let mode = tools.storage.get("stream.mode", defaultMode);
tools.radio.clickValue("stream-mode-radio", mode);
};
/************************************************************************/
@@ -225,7 +230,7 @@ export function Streamer() {
tools.feature.setEnabled($("stream-mic"), false);
}
let mode = tools.storage.get("stream.mode", "janus");
let mode = tools.storage.get("stream.mode", "mjpeg"); // 这里也改为默认 mjpeg
if (mode === "janus" && !has_janus) {
mode = "media";
}
@@ -306,21 +311,25 @@ export function Streamer() {
mode = __streamer.getMode();
}
__streamer.stopStream();
if (mode === "janus") {
if (mode === "mjpeg") {
// For mjpeg mode, create an instance of MjpegStreamer
__streamer = new MjpegStreamer(__setActive, __setInactive, __setInfo);
tools.feature.setEnabled($("stream-orient"), false);
tools.feature.setEnabled($("stream-audio"), false); // Enabling in stream_janus.js
tools.feature.setEnabled($("stream-mic"), false); // Ditto
} else if (mode === "media") {
// For media mode, create an instance of MediaStreamer
__streamer = new MediaStreamer(__setActive, __setInactive, __setInfo);
tools.feature.setEnabled($("stream-orient"), false);
tools.feature.setEnabled($("stream-audio"), false); // Assuming this should be disabled for MediaStreamer as well
tools.feature.setEnabled($("stream-mic"), false); // Ditto
} else { // janus
// For janus mode, create an instance of JanusStreamer with specific settings
__streamer = new JanusStreamer(__setActive, __setInactive, __setInfo,
tools.storage.getInt("stream.orient", 0), !$("stream-video").muted, $("stream-mic-switch").checked);
// Firefox doesn't support RTP orientation:
// - https://bugzilla.mozilla.org/show_bug.cgi?id=1316448
tools.feature.setEnabled($("stream-orient"), !tools.browser.is_firefox);
} else {
if (mode === "media") {
__streamer = new MediaStreamer(__setActive, __setInactive, __setInfo);
} else { // mjpeg
__streamer = new MjpegStreamer(__setActive, __setInactive, __setInfo);
}
tools.feature.setEnabled($("stream-orient"), false);
tools.feature.setEnabled($("stream-audio"), false); // Enabling in stream_janus.js
tools.feature.setEnabled($("stream-mic"), false); // Ditto
}
if (wm.isWindowVisible($("stream-window"))) {
__streamer.ensureStream((__state && __state.streamer !== undefined) ? __state.streamer : null);
@@ -369,7 +378,7 @@ export function Streamer() {
if (ok) {
stream_now_fps = tools.slider.getValue($("stream-desired-fps-slider"));
let recordedBlobs = [];
//"mjpeg" or "janus"
//"mjpeg" or "janus" or "media"
let stream_type = document.querySelector('input[name="stream-mode-radio"]:checked').value;
if ( stream_type == "mjpeg"){
@@ -378,9 +387,13 @@ export function Streamer() {
var ctx = stream_mjpeg_canvas.getContext('2d');
stream_mjpeg_canvas.width = stream_mjpeg_img.width;
stream_mjpeg_canvas.height = stream_mjpeg_img.height;
const stream = stream_mjpeg_canvas.captureStream(stream_now_fps); // Capture FPS
const stream = stream_mjpeg_canvas.captureStream(stream_now_fps);
mediaRecorder = new MediaRecorder(stream);
}else{
}else if(stream_type == "media"){
const stream_canvas = document.getElementById("stream-canvas")
stream_canvas.captureStream = stream_canvas.captureStream || stream_canvas.mozCaptureStream;
mediaRecorder = new MediaRecorder(stream_canvas.captureStream(stream_now_fps));
}else if(stream_type == "janus"){
const stream = document.getElementById("stream-video")
stream.captureStream = stream.captureStream || stream.mozCaptureStream;
mediaRecorder = new MediaRecorder(stream.captureStream());