From 56cfdb5e17c61b3028be5c9f8936b3e34cf04764 Mon Sep 17 00:00:00 2001 From: Luna Date: Sun, 11 Jan 2026 19:42:16 -0300 Subject: [PATCH 1/2] tweak video curve --- video.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/video.go b/video.go index 92fc49e..5b51ff9 100644 --- a/video.go +++ b/video.go @@ -198,14 +198,14 @@ func getFrameSkipSeconds(totalSeconds int) int { case totalSeconds <= 60: return 5 case totalSeconds <= 120: - return 10 + return 7 case totalSeconds <= 300: - return 12 + return 10 case totalSeconds <= 1000: return 15 case totalSeconds <= 1200: - return 40 + return 20 default: - return 60 + return 26 } } From 31e91a0fa169230949a681f79174b3ab93ba1f09 Mon Sep 17 00:00:00 2001 From: Luna Date: Fri, 22 May 2026 22:27:42 -0300 Subject: [PATCH 2/2] put videos under a semaphore --- main.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/main.go b/main.go index 8a54de7..c9788a6 100644 --- a/main.go +++ b/main.go @@ -74,6 +74,7 @@ type WD14Caption struct { var ( config *Config httpClient = &http.Client{} + videoSem = make(chan struct{}, 1) ) func loadConfig() (*Config, error) { @@ -294,6 +295,11 @@ func handleImage(w http.ResponseWriter, data []byte, fileName, contentType, thre } func handleVideo(w http.ResponseWriter, data []byte, fileName, threshold string) { + slog.Info("waiting for video processing slot", "queued", len(videoSem)) + videoSem <- struct{}{} + defer func() { <-videoSem }() + slog.Info("acquired video processing slot") + // Write video to temp file ext := filepath.Ext(fileName) tmpFile, err := os.CreateTemp("", "glimbus-video-*"+ext)