12/03/2025
A gravação de tela é um recurso essencial para tutoriais, suporte técnico e captura de conteúdos dinâmicos. Pensando nisso, desenvolvi um sistema completo de gravação de tela utilizando JavaScript e a MediaRecorder API, garantindo a captura tanto do vídeo quanto do áudio do sistema e do microfone. O diferencial desse projeto é a persistência das gravações no navegador, utilizando localStorage.
O código-fonte do projeto está disponível no GitHub:
Repositório GitHub – ScreenRec
O projeto consiste em uma interface web construída com HTML, CSS e Bootstrap 5, além da lógica de gravação implementada em JavaScript puro. Os vídeos são armazenados no navegador e podem ser acessados posteriormente.
Utilizei a MediaRecorder API para capturar tanto o vídeo da tela quanto o áudio do sistema e do microfone. A função navigator.mediaDevices.getDisplayMedia()
permite selecionar a tela ou janela a ser gravada, enquanto navigator.mediaDevices.getUserMedia()
adiciona o áudio do usuário.
Código:
Os vídeos são convertidos para Base64 e salvos no localStorage. Isso permite que o usuário acesse gravações anteriores sem necessidade de download imediato.
O problema dessa abordagem é que o localStorage tem um limite de aproximadamente cinco megabytes, o que restringe gravações maiores. A melhoria futura seria migrar o armazenamento para IndexedDB, que permite armazenar arquivos grandes.
O sistema exibe todas as gravações armazenadas e permite que o usuário baixe, visualize ou exclua cada uma delas.
Uma melhoria futura seria implementar paginação e filtros para facilitar a navegação em grandes volumes de gravações.
Apesar do projeto estar funcional, há pontos que podem ser otimizados:
O localStorage tem uma limitação severa de espaço e não foi projetado para armazenar arquivos grandes. A solução ideal é migrar o armazenamento para IndexedDB, que permite salvar arquivos binários sem limitação prática de tamanho.
Os arquivos gerados podem ser grandes. Para reduzir o consumo de armazenamento e melhorar a experiência do usuário, é possível usar a WebCodecs API ou um backend que processe e compacte os vídeos antes do download.
Atualmente, o código não trata cenários como:
Adicionando um tratamento de erros robusto, a experiência do usuário melhora.
O projeto ScreenRec é uma solução prática para gravação de tela diretamente no navegador. Utilizando apenas JavaScript puro, MediaRecorder API e localStorage, consegui criar um sistema funcional e persistente.
Entretanto, ainda há melhorias que podem ser feitas, como a migração para IndexedDB, implementação de compressão de vídeo, aprimoramento no tratamento de erros e suporte para armazenamento na nuvem.
Se quiser testar ou contribuir para o projeto, o código-fonte está disponível no GitHub:
Repositório GitHub – ScreenRec
Caso tenha sugestões ou dúvidas, deixe um comentário.