パフォーマンス#2
This commit is contained in:
parent
d8d27ddf23
commit
fc2dc0a478
|
|
@ -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:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user