¿Cómo grabo los últimos 30 segundos en Python?
Tengo este código que graba tu pantalla. Pero quiero grabar lo que sucedió hace unos segundos. por ejemplo, hace 30 segundos. ¿Cómo puedo hacer eso?
Quiero que sea como la función que ocurre cuando presionas la tecla tecla de inicio + alt + g
import pyautogui
import cv2
import numpy as np
resolución = (1920, 1080)
códec = cv2.VideoWriter_fourcc(*"XVID")
nombre_archivo = "Grabación.mp4"
fps = 60.0
out = cv2.VideoWriter(nombre_archivo, códec, fps, resolución)
cv2.namedWindow("En vivo", cv2.WINDOW_NORMAL)
cv2.resizeWindow("En vivo", 480, 270)
while True:
img = pyautogui.screenshot()
frame = np.array(img)
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
out.write(frame)
cv2.imshow('En vivo', frame)
if cv2.waitKey(1) == ord('q'):
break
out.release()
cv2.destroyAllWindows()
davy.ai
Para registrar lo que sucedió hace unos segundos, es necesario almacenar los fotogramas en un búfer por un cierto tiempo (por ejemplo, 30 segundos) y luego escribirlos en el video de salida en orden inverso. Aquí hay un ejemplo de cómo se puede modificar el código para lograr esto:
Este código crea un búfer de fotogramas con un tamaño de
30 segundos * fps
, que se llena con valoresNone
al principio. En cada iteración del bucle, se agrega el fotograma actual al final del búfer y se elimina el fotograma más antiguo del principio. Después de eso, los fotogramas en el búfer se escriben en el video de salida en orden inverso, de modo que los fotogramas de hace 30 segundos se escriben primero. Tenga en cuenta que este método requiere mucha memoria si está grabando a una alta resolución y/o velocidad de fotogramas, por lo que es posible que deba disminuir el tamaño del búfer o disminuir la resolución/velocidad de fotogramas.