pip install tkinter pygetwindow pyautogui opencv-python
Qt (PyQt6)
- Modos de captura: Câmara USB, Ecrã inteiro, ou Janela específica (quando suportado pelo
pygetwindow
). - Cross-platform: Windows 10, Ubuntu e macOS (no macOS lembra-te de autorizar Screen Recording em Privacy & Security).
- Controlos: escolher ficheiro de saída, FPS, índice da câmara, codec (mp4v/XVID/MJPG/H264), Gravar/Parar/Sair.
- Desempenho: captura de ecrã via
mss
(rápido e portátil). Escrita com OpenCV.
pip install PyQt6 opencv-python mss numpy pygetwindow
Dica: se fores gravar para
.mp4
, usa o codec mp4v (pré-definido). Para.avi
, troca para XVID.
python qt_recorder.py
- No macOS, se a janela ficar preta ao gravar ecrã, vai a System Settings → Privacy & Security → Screen Recording e autoriza o Python/Terminal.
Feito ✅ — atualizei o script, tem agora:
- seleção de região por “arrastar para desenhar” (overlay transparente, ecrã inteiro)
- pré-visualização ao vivo (ativável)
- escolha de resolução (redimensiona na captura) e bitrate (aplicado no passo ffmpeg)
- áudio do microfone com
sounddevice
+soundfile
, e mux/encode final comffmpeg
(opcional re-encode)
pip install PyQt6 opencv-python mss numpy pygetwindow sounddevice soundfile
# Também precisas do ffmpeg instalado no sistema (acessível como comando "ffmpeg")
- O vídeo é gravado primeiro para um ficheiro temporário (OpenCV).
- O áudio (se ativado) é gravado para WAV temporário.
- No fim, o
ffmpeg
faz o mux (e opcionalmente re-encode para aplicar o bitrate escolhido, comlibx264 + aac
). - Podes gravar: câmara, ecrã inteiro, janela (quando suportado) ou região arrastada.
Boa pergunta 👌 — sem ffmpeg o teu gravador funciona, mas só guarda o vídeo “cru” (sem áudio, sem bitrate controlado). Para poderes juntar áudio + vídeo e aplicar bitrate/resolução profissional, precisas de instalar o ffmpeg no teu sistema operativo. Vou explicar para Windows 10, Ubuntu Linux e macOS.
- Vai ao site oficial: https://ffmpeg.org/download.html → escolhe Windows builds (por ex. gyan.dev ou BtbN builds)
- Faz download do ZIP estático (ex:
ffmpeg-release-full.7z
ouffmpeg-release-essentials.zip
).
- Extrai o ZIP (por exemplo para
C:\\ffmpeg
). - Dentro de
C:\\ffmpeg\\bin
está o executávelffmpeg.exe
.
-
Pesquisa por Variáveis de ambiente no Windows.
-
Edita a variável Path e adiciona
C:\\ffmpeg\\bin
. -
Abre uma nova janela do CMD/PowerShell e testa:
ffmpeg -version
Se aparecer a versão, está ok.
O ffmpeg já está nos repositórios oficiais:
sudo apt update
sudo apt install ffmpeg
Depois verifica:
ffmpeg -version
Se quiseres uma versão mais recente, podes usar o PPA oficial:
sudo add-apt-repository ppa:jonathonf/ffmpeg-4
sudo apt update
sudo apt install ffmpeg
No macOS, a forma mais simples é via Homebrew:
-
Instala o Homebrew (se ainda não tens):
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
-
Depois instala o ffmpeg:
brew install ffmpeg
-
Verifica:
ffmpeg -version
Se não usar Homebrew, também pode fazer download de builds prontos de evermeet.cx ou ffmpeg.org.
No teu código, depois da gravação:
- gera-se um vídeo temporário (sem áudio)
- gera-se um WAV temporário (com áudio do microfone)
- depois o Python corre:
ffmpeg -y -i video_temp.mp4 -i audio_temp.wav -c:v libx264 -b:v 6000k -pix_fmt yuv420p -c:a aac -b:a 160k final.mp4
👉 Isto junta vídeo + áudio e aplica o bitrate/resolução escolhidos.
⚡ Ou seja:
- Windows → download ZIP, extrair e pôr
bin
no PATH. - Ubuntu →
sudo apt install ffmpeg
. - macOS →
brew install ffmpeg
.