Crear una grabadora de pantalla usando Python

Python es un lenguaje de propósito general ampliamente utilizado. Permite realizar una variedad de tareas. Uno de ellos puede ser la grabación de un vídeo. Proporciona un módulo llamado pyautogui que se puede usar para lo mismo. Este módulo junto con NumPy y OpenCV proporciona la forma de manipular y guardar las imágenes (captura de pantalla en este caso)

Módulos necesarios

  • Numpy: para instalar Numpy, escriba el siguiente comando en la terminal.
pip install numpy
  • pyautogui: para instalar pyautogui, escriba el siguiente comando en la terminal.
pip install pyautogui
  • OpenCV: para instalar OpenCV, escriba el siguiente comando en la terminal.
pip install opencv-python

A continuación se muestra la implementación.

Primero, importe todos los paquetes necesarios. 

Python3

# importing the required packages
import pyautogui
import cv2
import numpy as np

Ahora, antes de grabar la pantalla, tenemos que crear un objeto VideoWriter. Además, debemos especificar el nombre del archivo de salida, el códec de video, FPS y la resolución de video. En el códec de video, tenemos que especificar un código de 4 bytes (como XVID, MJPG, X264, etc.). Usaremos XVID aquí.

Python3

# Specify resolution
resolution = (1920, 1080)
  
# Specify video codec
codec = cv2.VideoWriter_fourcc(*"XVID")
  
# Specify name of Output file
filename = "Recording.avi"
  
# Specify frames rate. We can choose 
# any value and experiment with it
fps = 60.0
  
# Creating a VideoWriter object
out = cv2.VideoWriter(filename, codec, fps, resolution)

Opcional: para mostrar la grabación en tiempo real, debemos crear una ventana vacía y cambiar su tamaño.

Python3

# Create an Empty window
cv2.namedWindow("Live", cv2.WINDOW_NORMAL)
  
# Resize this window
cv2.resizeWindow("Live", 480, 270)

Ahora, comencemos a grabar nuestra pantalla. Ejecutaremos un ciclo infinito y en cada iteración del ciclo, tomaremos una captura de pantalla y la escribiremos en el archivo de salida con la ayuda del escritor de video.

Python3

while True:
  
    # Take screenshot using PyAutoGUI
    img = pyautogui.screenshot()
  
    # Convert the screenshot to a numpy array
    frame = np.array(img)
  
    # Convert it from BGR(Blue, Green, Red) to
    # RGB(Red, Green, Blue)
    frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
  
    # Write it to the output file
    out.write(frame)
      
    # Optional: Display the recording screen
    cv2.imshow('Live', frame)
      
    # Stop recording when we press 'q'
    if cv2.waitKey(1) == ord('q'):
        break

Después de que todo esté hecho, liberaremos el escritor y destruiremos todas las ventanas abiertas por OpenCV.

Python3

# Release the Video writer
out.release()
  
# Destroy all windows
cv2.destroyAllWindows()

Código completo:

Python3

# importing the required packages
import pyautogui
import cv2
import numpy as np
  
# Specify resolution
resolution = (1920, 1080)
  
# Specify video codec
codec = cv2.VideoWriter_fourcc(*"XVID")
  
# Specify name of Output file
filename = "Recording.avi"
  
# Specify frames rate. We can choose any 
# value and experiment with it
fps = 60.0
  
  
# Creating a VideoWriter object
out = cv2.VideoWriter(filename, codec, fps, resolution)
  
# Create an Empty window
cv2.namedWindow("Live", cv2.WINDOW_NORMAL)
  
# Resize this window
cv2.resizeWindow("Live", 480, 270)
  
while True:
    # Take screenshot using PyAutoGUI
    img = pyautogui.screenshot()
  
    # Convert the screenshot to a numpy array
    frame = np.array(img)
  
    # Convert it from BGR(Blue, Green, Red) to
    # RGB(Red, Green, Blue)
    frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
  
    # Write it to the output file
    out.write(frame)
      
    # Optional: Display the recording screen
    cv2.imshow('Live', frame)
      
    # Stop recording when we press 'q'
    if cv2.waitKey(1) == ord('q'):
        break
  
# Release the Video writer
out.release()
  
# Destroy all windows
cv2.destroyAllWindows()

Producción:

Publicación traducida automáticamente

Artículo escrito por devansh07 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *