mirror of
https://github.com/sipeed/NanoKVM.git
synced 2026-09-11 00:22:56 -05:00
- H.264 WebRTC: Refactored to significantly reduce video latency - H.264 Direct: Optimized data transmission; data parsing now continues correctly even when the tab is in the background - MJPEG: Refactored to ensure the correct data length is sent Bug Fixes - Fixed an issue where certain keyboard modifier keys were not recognized - Fixed vertical mouse cursor drift when the page is zoomed in or out Optimizations - Optimized HID write logic and updated the HID reset mechanism - Added support for deleting images - Added a Swap Memory option to the Tailscale page - Added a confirmation dialog when uninstalling Tailscale to prevent accidental removal - Improved the logic for updating the web page title - Improved the UI for the Clipboard, Settings, Image Mounting, and App Update pages Security - Added a mandatory delay after failed login attempts to prevent brute-force attacks - Updated dependencies to patch known security vulnerabilities
50 lines
916 B
Go
50 lines
916 B
Go
package h264
|
|
|
|
import (
|
|
"NanoKVM-Server/common"
|
|
"time"
|
|
|
|
"github.com/pion/webrtc/v4/pkg/media"
|
|
log "github.com/sirupsen/logrus"
|
|
)
|
|
|
|
func send() {
|
|
screen := common.GetScreen()
|
|
common.CheckScreen()
|
|
|
|
fps := screen.FPS
|
|
duration := time.Second / time.Duration(fps)
|
|
|
|
ticker := time.NewTicker(duration)
|
|
defer ticker.Stop()
|
|
|
|
vision := common.GetKvmVision()
|
|
for range ticker.C {
|
|
if !isSending && len(trackMap) == 0 {
|
|
return
|
|
}
|
|
|
|
data, result := vision.ReadH264(screen.Width, screen.Height, screen.BitRate)
|
|
if result < 0 || len(data) == 0 {
|
|
continue
|
|
}
|
|
|
|
sample := media.Sample{
|
|
Data: data,
|
|
Duration: duration,
|
|
}
|
|
|
|
for _, track := range trackMap {
|
|
if err := track.WriteSample(sample); err != nil {
|
|
log.Errorf("failed to send h264 data: %s", err)
|
|
}
|
|
}
|
|
|
|
if screen.FPS != fps {
|
|
fps = screen.FPS
|
|
duration = time.Second / time.Duration(fps)
|
|
ticker.Reset(duration)
|
|
}
|
|
}
|
|
}
|