Python é uma linguagem de uso geral amplamente usada. Permite realizar uma variedade de tarefas. Um deles pode estar gravando um vídeo. Ele fornece um módulo chamado pyautogui que pode ser usado para o mesmo. Este módulo junto com NumPy e OpenCV fornece a maneira de manipular e salvar as imagens (captura de tela neste caso)

Módulos necessários

  • Numpy: Para instalar o Numpy, digite o comando abaixo no terminal.
pip install numpy
  • pyautogui: Para instalar o pyautogui, digite o comando abaixo no terminal.
pip install pyautogui
  • OpenCV: Para instalar o OpenCV digite o comando abaixo no terminal.
pip install opencv-python

Abaixo está a implementação.

Primeiro, importe todos os pacotes necessários. 

import pyautogui 
import cv2 
import numpy as np

Agora, antes de gravar a tela, temos que criar um objeto VideoWriter. Além disso, temos que especificar o nome do arquivo de saída, codec de vídeo, FPS e resolução de vídeo. No codec de vídeo, temos que especificar um código de 4 bytes (como XVID, MJPG, X264, etc.). Estaremos usando XVID aqui.



resolution = (1920, 1080) 
codec = cv2.VideoWriter_fourcc(*"XVID") 
filename = "Recording.avi"
fps = 60.0
out = cv2.VideoWriter(filename, codec, fps, resolution)

Opcional: Para exibir a gravação em tempo real, temos que criar uma janela vazia e redimensioná-la.

cv2.namedWindow("Live", cv2.WINDOW_NORMAL) 
cv2.resizeWindow("Live", 480, 270)

Agora, vamos começar a gravar nossa tela. Estaremos executando um loop infinito e, a cada iteração do loop, faremos uma captura de tela e escreveremos no arquivo de saída com a ajuda do gravador de vídeo.

while True: 
  
    
    img = pyautogui.screenshot() 
  
    
    frame = np.array(img) 
  
    
    
    frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) 
  
    
    out.write(frame) 
      
    
    cv2.imshow('Live', frame) 
      
    
    if cv2.waitKey(1) == ord('q'): 
        break

Depois que tudo for feito, iremos liberar o escritor e destruir todas as janelas abertas pelo OpenCV.

out.release() 
cv2.destroyAllWindows()

Código Completo:

import pyautogui 
import cv2 
import numpy as np 
resolution = (1920, 1080) 
codec = cv2.VideoWriter_fourcc(*"XVID") 
filename = "Recording.avi"
fps = 60.0
  
  
out = cv2.VideoWriter(filename, codec, fps, resolution) 
cv2.namedWindow("Live", cv2.WINDOW_NORMAL) 
cv2.resizeWindow("Live", 480, 270) 
  
while True: 
    
    img = pyautogui.screenshot() 
  
    
    frame = np.array(img) 
  
    
    
    frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) 
  
    
    out.write(frame) 
      
    
    cv2.imshow('Live', frame) 
      
    
    if cv2.waitKey(1) == ord('q'): 
        break
out.release() 
cv2.destroyAllWindows()

Resultado: