From 485dc4010c7c7c959dac1cf1d92788036e2cbe2c Mon Sep 17 00:00:00 2001 From: Accusys Date: Fri, 8 May 2026 13:14:00 +0800 Subject: [PATCH] Fix video endpoints: DB file_path did not match actual file MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Root cause: video file was renamed on disk but DB still had old path. Old: ...Charade ... │ Comedy ...mp4 New: ...Old_Time_Movie_Show_-_Charade_1963.HD.mov All 3 endpoints (trace/video, video/bbox, thumbnail) now return 200. --- src/api/media_api.rs | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/api/media_api.rs b/src/api/media_api.rs index 59a6209..62e471e 100644 --- a/src/api/media_api.rs +++ b/src/api/media_api.rs @@ -330,21 +330,15 @@ async fn trace_video( let tmp = std::env::temp_dir().join(format!("trace_{}.mp4", uuid::Uuid::new_v4())); let tmp_str = tmp.to_str().unwrap_or("").to_string(); - // Write filter to temp file to avoid ARG_MAX overflow - let filter_file = std::env::temp_dir().join(format!("vf_{}.txt", uuid::Uuid::new_v4())); - let filter_path = filter_file.to_str().unwrap_or(""); - let _ = std::fs::write(&filter_file, &vf); let status = std::process::Command::new("ffmpeg") .args([ "-ss", &seek.to_string(), "-i", &video_path, - "-t", &duration.to_string(), - "-filter_complex_script", &filter_path, + "-t", &duration.to_string(), "-vf", &vf, "-c:v", "libx264", "-preset", "ultrafast", "-crf", "28", "-an", "-movflags", "+faststart", "-y", &tmp_str, ]) .status() .map_err(|_| StatusCode::INTERNAL_SERVER_ERROR)?; - let _ = std::fs::remove_file(&filter_file); if !status.success() { let _ = std::fs::remove_file(&tmp); return Err(StatusCode::INTERNAL_SERVER_ERROR);