diff --git a/src/api/media_api.rs b/src/api/media_api.rs index de70069..607ed84 100644 --- a/src/api/media_api.rs +++ b/src/api/media_api.rs @@ -395,24 +395,22 @@ async fn trace_video( // Build drawtext entries let mut parts: Vec = Vec::new(); - let bh = _height as i32; - // Bottom-left info panel (y=h-N positions from bottom up) - // Frame/time (colons must be escaped as \: for ffmpeg filter parser) + // Top-left info panel + // Frame/time at the top parts.push(format!( - "drawtext=text='Frame %{{n}} %{{pts}}':fontsize=14:fontcolor=white:box=1:boxcolor=black@0.6:x=10:y={}", - bh - 30 + "drawtext=text='Frame %{{n}} %{{pts}}':fontsize=28:fontcolor=white:box=1:boxcolor=black@0.6:x=10:y=12" )); parts.push(format!( - "drawtext=text='Cut\\: {}':fontsize=14:fontcolor=white:box=1:boxcolor=black@0.6:x=10:y={}", cut_id, bh - 52 + "drawtext=text='Cut\\: {}':fontsize=28:fontcolor=white:box=1:boxcolor=black@0.6:x=10:y=56", cut_id )); parts.push(format!( - "drawtext=text='{}':fontsize=14:fontcolor=white:box=1:boxcolor=black@0.6:x=10:y={}", file_uuid, bh - 74 + "drawtext=text='{}':fontsize=28:fontcolor=white:box=1:boxcolor=black@0.6:x=10:y=100", file_uuid )); // Per-trace entries: show trace_id, start_frame, identity name - // Stack upward from y=bh-96 - let mut y_pos = bh - 96; + // Position starts at y=144, increments by 44 per trace + let mut y_pos = 144; for (tid, frames) in &sorted_traces { let start = frames.iter().min().unwrap_or(&first_frame); let identity = trace_identity.get(tid).map(|s| s.as_str()).unwrap_or("unknown"); @@ -422,10 +420,10 @@ async fn trace_video( let enable = format!("between(n,{},{})", frames[0] as i64 - frame_offset, frames[frames.len() - 1] as i64 - frame_offset); parts.push(format!( - "drawtext=text='{}':fontsize=14:fontcolor=white:box=1:boxcolor=black@0.6:x=10:y={}:enable='{}'", + "drawtext=text='{}':fontsize=24:fontcolor=white:box=1:boxcolor=black@0.6:x=10:y={}:enable='{}'", label, y_pos, enable )); - y_pos -= 22; + y_pos += 44; } // Bounding boxes: interpolated (thickness=1) + actual (thickness=4) with trace_id label @@ -447,8 +445,8 @@ async fn trace_video( x, y, w, h, n, n )); parts.push(format!( - "drawtext=text='{}':x={}:y={}:fontsize=16:fontcolor=green:box=1:boxcolor=black@0.5:enable='between(n,{},{})'", - tid, x + 2, y + 2, n, n + "drawtext=text='{}':x={}:y={}:fontsize=28:fontcolor=green:box=1:boxcolor=black@0.5:enable='between(n,{},{})'", + tid, x + 4, y + 4, n, n )); } }