パフォーマンス#2

This commit is contained in:
Keisuke Hirata 2026-02-13 00:05:55 +09:00
parent d8d27ddf23
commit fc2dc0a478

View File

@ -188,6 +188,23 @@ def process_video_task(task_id: str, req: GenerateRequest):
# Clear buffer # Clear buffer
frame_buffer.clear() frame_buffer.clear()
# Seek once to the starting frame. Avoid random-access seek on every frame.
if req.start_frame > 0:
seek_ok = cap.set(cv2.CAP_PROP_POS_FRAMES, req.start_frame)
if not seek_ok:
print(
f"[FaceMask] Warning: CAP_PROP_POS_FRAMES seek failed, "
f"fallback to sequential skip ({req.start_frame} frames)"
)
for _ in range(req.start_frame):
ret, _ = cap.read()
if not ret:
tasks[task_id].status = TaskStatus.FAILED
tasks[task_id].message = (
f"Failed to seek to start frame: {req.start_frame}"
)
return
# Process loop with batching # Process loop with batching
current_count = 0 current_count = 0
for frame_idx in range(req.start_frame, end_frame + 1): for frame_idx in range(req.start_frame, end_frame + 1):
@ -196,8 +213,7 @@ def process_video_task(task_id: str, req: GenerateRequest):
tasks[task_id].message = "Cancelled by user" tasks[task_id].message = "Cancelled by user"
break break
# Read frame # Read next frame sequentially (after one-time initial seek)
cap.set(cv2.CAP_PROP_POS_FRAMES, frame_idx)
ret, frame = cap.read() ret, frame = cap.read()
if ret: if ret: