feat: 新增 MJPEG/H.264 VNC 初步支持

This commit is contained in:
mofeng-git
2026-06-15 22:23:27 +08:00
parent 5c98aea7e3
commit c101ef1c80
34 changed files with 2270 additions and 354 deletions

View File

@@ -62,14 +62,6 @@ export interface Ch9329DescriptorConfig {
serial_number?: string;
}
export interface Ch9329DescriptorState {
descriptor: Ch9329DescriptorConfig;
manufacturer_enabled: boolean;
product_enabled: boolean;
serial_enabled: boolean;
config_mode_available: boolean;
}
export interface HidConfig {
backend: HidBackend;
otg_udc?: string;
@@ -234,11 +226,31 @@ export interface ExtensionsConfig {
export interface RustDeskConfig {
enabled: boolean;
codec: RustDeskCodec;
rendezvous_server: string;
relay_server?: string;
device_id: string;
}
export enum RustDeskCodec {
H264 = "h264",
H265 = "h265",
}
export enum VncEncoding {
TightJpeg = "tight_jpeg",
H264 = "h264",
}
export interface VncConfig {
enabled: boolean;
bind: string;
port: number;
encoding: VncEncoding;
jpeg_quality: number;
allow_one_client: boolean;
}
export enum RtspCodec {
H264 = "h264",
H265 = "h265",
@@ -270,6 +282,7 @@ export interface AppConfig {
web: WebConfig;
extensions: ExtensionsConfig;
rustdesk: RustDeskConfig;
vnc: VncConfig;
rtsp: RtspConfig;
redfish: RedfishConfig;
}
@@ -328,6 +341,14 @@ export interface Ch9329DescriptorConfigUpdate {
serial_number?: string;
}
export interface Ch9329DescriptorState {
descriptor: Ch9329DescriptorConfig;
manufacturer_enabled: boolean;
product_enabled: boolean;
serial_enabled: boolean;
config_mode_available: boolean;
}
export interface EasytierConfigUpdate {
enabled?: boolean;
network_name?: string;
@@ -480,6 +501,7 @@ export interface RtspStatusResponse {
export interface RustDeskConfigUpdate {
enabled?: boolean;
codec?: RustDeskCodec;
rendezvous_server?: string;
relay_server?: string;
relay_key?: string;
@@ -535,6 +557,32 @@ export interface VideoConfigUpdate {
quality?: number;
}
export interface VncConfigResponse {
enabled: boolean;
bind: string;
port: number;
encoding: VncEncoding;
jpeg_quality: number;
allow_one_client: boolean;
has_password: boolean;
}
export interface VncConfigUpdate {
enabled?: boolean;
bind?: string;
port?: number;
encoding?: VncEncoding;
jpeg_quality?: number;
allow_one_client?: boolean;
password?: string;
}
export interface VncStatusResponse {
config: VncConfigResponse;
service_status: string;
connection_count: number;
}
/**
* Web server settings returned by `GET` / `PATCH /api/config/web`.
*