mirror of
https://github.com/hacksider/Deep-Live-Cam.git
synced 2025-03-17 21:31:51 +01:00
Preview video Frame by Frame using left and right arrow keys
This commit is contained in:
parent
e00c398825
commit
4d1d2c86af
@ -5,7 +5,7 @@ from typing import Callable, Tuple
|
||||
import cv2
|
||||
from PIL import Image, ImageOps
|
||||
import tkinterdnd2 as tkdnd
|
||||
|
||||
import time
|
||||
import modules.globals
|
||||
import modules.metadata
|
||||
from modules.face_analyser import (
|
||||
@ -682,6 +682,29 @@ def create_preview(parent: ctk.CTkToplevel) -> ctk.CTkToplevel:
|
||||
)
|
||||
preview_slider.pack(fill="x", padx=20, pady=10)
|
||||
|
||||
last_update_time = 0
|
||||
debounce_delay = 0.1 # Adjust this delay as needed (in seconds)
|
||||
|
||||
def on_key_press(event):
|
||||
nonlocal last_update_time
|
||||
|
||||
current_time = time.time()
|
||||
if current_time - last_update_time > debounce_delay:
|
||||
current_frame = int(preview_slider.get())
|
||||
if event.keysym == "Left":
|
||||
new_frame = max(0, current_frame - 1)
|
||||
elif event.keysym == "Right":
|
||||
new_frame = min(int(preview_slider.cget("to")), current_frame + 1)
|
||||
else:
|
||||
return # Ignore other key presses
|
||||
|
||||
preview_slider.set(new_frame)
|
||||
update_preview(new_frame)
|
||||
last_update_time = current_time
|
||||
|
||||
preview.bind("<Left>", on_key_press)
|
||||
preview.bind("<Right>", on_key_press)
|
||||
|
||||
return preview
|
||||
|
||||
|
||||
@ -879,6 +902,11 @@ def init_preview() -> None:
|
||||
preview_slider.configure(to=video_frame_total)
|
||||
preview_slider.pack(fill="x")
|
||||
preview_slider.set(0)
|
||||
# Disable slider if it's an image
|
||||
if is_image(modules.globals.target_path):
|
||||
preview_slider.configure(state="disabled")
|
||||
else:
|
||||
preview_slider.configure(state="normal")
|
||||
|
||||
|
||||
def update_preview(frame_number: int = 0) -> None:
|
||||
|
Loading…
x
Reference in New Issue
Block a user