Blog

Postado em em 19 de outubro de 2023

Como Filmar a Tela do Computador com Python

Aprenda como filmar a tela do computador com Python. Isso mesmo, é possível gravar a tela do seu computador usando Python!

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!

Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:

Como Filmar a Tela do Computador com Python

Aqui na Hashtag, já ensinamos como controlar e gravar com a sua webcam usando Python. Agora, você vai aprender como filmar a tela do computador com Python! Sendo possível até mesmo combinar esses dois códigos e fazer gravações completas.

Vou mostrar o passo a passo e as configurações necessárias para você conseguir gravar a tela do seu PC com Python.

O processo de como faremos isso é bem simples e rápido. Após esta aula, você estará pronto para capturar a tela do computador com Python e criar suas próprias gravações.

Não esqueça de fazer o download do material disponível para acompanhar e aprender como filmar a tela do computador com Python!

Criação do Arquivo e Instalação das Bibliotecas

Para desenvolvermos o código que nos permitirá filmar a tela do computador com Python, vamos precisar utilizar algum editor de códigos. Eu usarei o VS Code, mas você pode usar o de sua preferência.

Para este projeto, vamos utilizar as bibliotecas OpenCV, Keyboard, Numpy e PyAutoGUI.

O PyAutoGUI será responsável por tirar o print da nossa tela, e passar através do Numpy para o OpenCV que criará o vídeo. A biblioteca Keyboard será responsável por interromper a gravação da tela.

Vamos às instalações necessárias. Abra seu editor de código, crie um arquivo para desenvolver seu código e no terminal do editor execute:

pip install numpy pyautogui opencv-python keyboard

Após isso, você pode importar essas bibliotecas para seu código.

import cv2
import keyboard
import pyautogui
import numpy as np

Observe que estamos importando o OpenCV como cv2 e o Numpy com o alias de np.

Como vai funcionar a gravação de tela com Python

Um vídeo é, basicamente, uma combinação de diversos frames (quadros), que são como fotos do vídeo. Quando reproduzimos esses quadros em rápida sucessão, o olho humano percebe essa sequência como um vídeo.

Isso é o que significa quando vemos, por exemplo escrito 30 fps ou 60 fps em algum programa, vídeo ou jogo. Essa é a abreviação de frames per second (quadros por segundo), ou seja, 30 fps representam 30 “fotos” exibidas a cada segundo.

Portanto, nosso código fará várias capturas de tela dentro de um intervalo de um segundo. Posteriormente, ao renderizar o vídeo, determinaremos quantos quadros por segundo nosso vídeo terá.

Configurações para o Vídeo

Após importar as bibliotecas necessárias, o próximo passo do nosso código para filmar a tela do computador com Python é definir algumas configurações para o nosso vídeo.

Taxa de Quadros (FPS): Começamos definindo a taxa de quadros (fps) como 30. A taxa de quadros, como vimos, determina quantos quadros de imagem são exibidos por segundo no vídeo.

fps = 30

É importante observar que, se a tela do seu computador não suporta uma taxa de quadros maior que 30 fps, inserir um valor maior para essa variável não terá efeito, pois a gravação ficará limitada pela capacidade da tela.

Resolução do Vídeo: Também precisamos definir a resolução final do nosso vídeo. Para isso, usamos a função pyautogui.size() e convertemos o resultado em uma tupla.

tamanho_tela = tuple(pyautogui.size())

Precisamos fazer isso porque a função pyautogui.size() retorna um objeto, mas a biblioteca OpenCV, responsável por criar o vídeo, requer uma tupla para determinar a resolução final do vídeo.

Codec do Vídeo: Agora, precisamos criar o codec para o nosso vídeo. Um codec de vídeo, de forma resumida, é um software que permite compactar e descomprimir vídeos digitalmente.

O OpenCV é capaz de fazer isso pra gente através da função VideoWriter_fourcc(). Essa função é usada para definir o codec que será usado ao criar o nosso arquivo de vídeo. Nos permitindo especificar o codec que será usado para comprimir o vídeo durante a gravação da tela.

codec = cv2.VideoWriter_fourcc(*"XVID")

Nesse exemplo, estamos usando o codec Xvid para criar um vídeo no formato AVI. Lembre-se de que você deve passar o código do codec nesse formato (*”CÓDIGO_DO_CODEC”) para a função VideoWriter_fourcc().

Inicialização do Vídeo: Agora que as configurações estão prontas, podemos criar o nosso vídeo. Usamos a função VideoWriter, passando como argumentos o nome do arquivo com a extensão correspondente ao codec, o codec em si, a taxa de quadros (fps) e o tamanho da tela que será renderizado

video = cv2.VideoWriter("video.avi", codec, fps, tamanho_tela)

Com isso, a configuração do nosso vídeo está pronta, e a gravação será salva nesse formato determinado.

Como Filmar a tela do Computador com Python

A configuração do nosso vídeo está pronta, agora precisamos definir como iremos gravar a tela do computador com Python.

Para isso, criamos um loop infinito que tira uma captura de tela usando a função pyautogui.screenshot() e, em seguida, transforma o quadro dessa captura em uma matriz numpy.

No OpenCV, as imagens são tratadas como matrizes, onde cada pixel contém informações sobre a quantidade de vermelho, verde e azul (RGB).

No entanto, o OpenCV lida com a ordem dessas cores de forma diferente, seguindo o padrão BGR (azul, verde e vermelho) em vez de RGB (vermelho, verde e azul). Portanto, é necessário converter as cores dos nossos frames para o formato BGR usando a função cv2.cvtColor().

while True:
    frame = pyautogui.screenshot()
    frame = np.array(frame)

    frame = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)

Nesse loop infinito, gravamos continuamente os frames usando a função video.write(frame) que irá escrever o nosso frame dentro do vídeo.

while True:
    frame = pyautogui.screenshot()
    frame = np.array(frame)

    frame = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)

    video.write(frame)

Dentro do loop, precisamos definir um comando para interromper a gravação. Para isso, utilizamos a biblioteca keyboard associada a uma estrutura condicional if. Se a tecla Esc for pressionada, o loop infinito será interrompido e a gravação encerrada.

while True:
    frame = pyautogui.screenshot()
    frame = np.array(frame)

    frame = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)

    video.write(frame)

    if keyboard.is_pressed("esc"):
        break

Após interromper o loop de gravação, é importante finalizar a gravação e fechar todas as janelas do OpenCV para garantir que o vídeo seja salvo corretamente.

video.release()
cv2.destroyAllWindows()

Dessa forma, temos o nosso código pronto para filmar a tela do computador com Python.

import cv2
import keyboard
import pyautogui
import numpy as np

fps = 30
tamanho_tela = tuple(pyautogui.size())
codec = cv2.VideoWriter_fourcc(*"XVID")
video = cv2.VideoWriter("video.avi", codec, fps, tamanho_tela)

while True:
    frame = pyautogui.screenshot()
    frame = np.array(frame)

    frame = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)

    video.write(frame)

    if keyboard.is_pressed("esc"):
        break

video.release()
cv2.destroyAllWindows()

Ao executar o código, a gravação da tela do computador começará, e você poderá interrompê-la pressionando a tecla Esc.

Filmar a tela do computador

Conclusão – Como Filmar a Tela do Computador com Python

Na aula de hoje, você aprendeu o passo a passo para gravar a tela do computador com Python, cobrindo todas as configurações necessárias.

No entanto, como você deve ter notado, o resultado desse vídeo não inclui áudio. No entanto, você pode combinar este código com o que ensinamos em uma aula anterior, na qual explicamos como capturar o áudio do microfone do seu computador com Python.

Dessa forma, você terá um código prático e eficiente que permitirá fazer gravações completas da tela do seu computador usando Python.

Hashtag Treinamentos

Para acessar outras publicações de Python, clique aqui!


Quer aprender mais sobre Python com um minicurso básico gratuito?

Quer sair do zero no Python e virar uma referência na sua empresa? Inscreva-se agora mesmo no Python Impressionador