01Contexto e problema
Para salvar um lance de jogo depois que ele acontece, é preciso um gravador que fique sempre ligado em segundo plano. As opções conhecidas são completas, mas pesadas ou presas a um ecossistema (OBS, ShadowPlay). A proposta era um gravador que fizesse só isso, bem e sem atrapalhar o jogo.
02Objetivo
- Gravar a tela e manter um replay contínuo dos últimos segundos, salvando o clipe com um atalho.
- Consumir o mínimo de CPU e memória em repouso e durante a captura.
- Não perder a gravação se o app cair.
03Solução desenvolvida
Um executável nativo em C++20 sem janela principal: o Qlip fica na bandeja e abre um painel por cima do jogo (Alt+P). A captura usa o Windows Graphics Capture, a codificação H.264 é feita na GPU via NVENC e o áudio do sistema e do microfone é mixado em AAC. O muxing em MP4 usa o FFmpeg (build LGPL, distribuído como DLLs).
04Minha contribuição
Projeto pessoal desenvolvido por mim: arquitetura dos módulos de captura, codificação, replay e gravação, a interface Win32, o instalador (Inno Setup), o site do produto e os testes de desempenho documentados no repositório.
05Tecnologias e arquitetura
O código é dividido por responsabilidade em src/: capture, audio, encoder, replay, recording, config e ui. Vídeo e áudio usam o mesmo relógio (QPC) para ficarem sincronizados.
06Principais funcionalidades
- Gravação contínua (F9): tela inteira ou só o jogo, em 30/60/120 fps, com resolução e qualidade configuráveis.
- Replay instantâneo (F10/F8): mantém os últimos 15 a 120 segundos e salva o clipe em MP4, funcionando junto com a gravação.
- Áudio: som do sistema e microfone com volumes separados; se o dispositivo for desconectado, a captura reconecta sozinha.
- Painel no jogo (Alt+P): abre por cima do jogo, escurece só o monitor dele, devolve o foco ao fechar e não aparece nas gravações.
- Biblioteca e configurações: lista de gravações e clipes, atalhos personalizáveis e início com o Windows.
07Desafios técnicos e soluções
Guardar minutos de vídeo em memória sem explodir a RAM
Solução: o buffer de replay guarda pacotes já codificados, nunca frames brutos. Ao salvar, o clipe começa num keyframe para ser reproduzível sem recodificar.
Manter áudio e vídeo sincronizados por horas
Solução: cada fonte de áudio é gravada como um fluxo contínuo e todas usam o mesmo relógio do vídeo. O relógio só corrige a deriva do dispositivo, uma amostra por vez; quando o dispositivo some, o intervalo vira silêncio em vez de deslocar o áudio.
Não perder a gravação em uma queda
Solução: a gravação é escrita em MP4 fragmentado temporário e recuperada na próxima abertura, perdendo no máximo o último fragmento (cerca de 1 s). Em três quedas provocadas em momentos diferentes, os três arquivos foram recuperados sem erros.
Entender de onde vinha o consumo de memória
Solução: medi o processo durante a captura e comparei com o ffmpeg.exe usando as mesmas DLLs. Cerca de 220 MB vêm da sessão NVENC do driver (346 MB com h264_nvenc contra 124 MB com encoder de software), e reduzir superfícies do NVENC não mudou esse valor. A conclusão ficou documentada como limitação conhecida.
Medições publicadas no README (i7-10700F, RTX 2060, padrão de teste 1080p60, não um jogo real): em repouso, 21,9 MB de RAM e 0% de CPU; gravando, 2,7% de CPU e 11% de NVENC; 10 min de gravação com 0,05% de frames perdidos. Itens não testados, como impacto em FPS de jogos e microfone, estão marcados como tal.
08Capturas



09Aprendizados e melhorias futuras
O Qlip envolveu APIs de baixo nível do Windows, codificação de vídeo em hardware e sincronização de mídia, áreas em que medir antes de concluir faz diferença. Os números e as limitações ficam no README, inclusive o que não foi testado.
Limitações conhecidas e próximos passos
- Requer GPU NVIDIA com NVENC; a inicialização sem GPU compatível ainda não foi testada.
- Gravação e replay ligados juntos abrem duas sessões NVENC (cerca de 2× a memória).
- O painel não abre sobre jogos em tela cheia exclusiva; funciona em tela cheia sem borda.
- Testar com jogos reais o impacto em FPS e a troca de dispositivos de áudio.
- Assinar digitalmente o instalador e o executável.
