mirror of
https://github.com/mofeng-git/One-KVM.git
synced 2026-02-01 10:31:54 +08:00
feat(webrtc): 添加公共ICE服务器支持和优化HID延迟
- 重构ICE配置:将TURN配置改为统一的ICE配置,支持STUN和多TURN URL - 添加公共ICE服务器:类似RustDesk,用户留空时使用编译时配置的公共服务器 - 优化DataChannel HID消息:使用tokio::spawn立即处理,避免依赖webrtc-rs轮询 - 添加WebRTCReady事件:客户端等待此事件后再建立连接 - 初始化时启动音频流,确保WebRTC可订阅 - 移除多余的trace/debug日志减少开销 - 更新前端配置界面支持公共ICE服务器显示
This commit is contained in:
@@ -396,6 +396,29 @@ impl VideoStreamManager {
|
||||
);
|
||||
self.webrtc_streamer.update_video_config(resolution, format, fps).await;
|
||||
self.webrtc_streamer.set_video_source(frame_tx).await;
|
||||
|
||||
// Get device path for events
|
||||
let device_path = self.streamer.current_device().await
|
||||
.map(|d| d.path.to_string_lossy().to_string())
|
||||
.unwrap_or_default();
|
||||
|
||||
// Publish StreamConfigApplied event - clients can now safely connect
|
||||
self.publish_event(SystemEvent::StreamConfigApplied {
|
||||
device: device_path,
|
||||
resolution: (resolution.width, resolution.height),
|
||||
format: format!("{:?}", format).to_lowercase(),
|
||||
fps,
|
||||
})
|
||||
.await;
|
||||
|
||||
// Publish WebRTCReady event - frame source is now connected
|
||||
let codec = self.webrtc_streamer.current_video_codec().await;
|
||||
let is_hardware = self.webrtc_streamer.is_hardware_encoding().await;
|
||||
self.publish_event(SystemEvent::WebRTCReady {
|
||||
codec: codec_to_string(codec),
|
||||
hardware: is_hardware,
|
||||
})
|
||||
.await;
|
||||
} else {
|
||||
warn!("No frame source available for WebRTC - sessions may fail to receive video");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user