Mais um update! Refiz a interface e adicionei novas funções. Sobre o suporte ao MP4 (mas não adicionado, ainda?) eu fiz uma pesquisa e achei interessante o uso do ffmpeg.wasm, que é o FFmpeg portado para WebAssembly, onde poderia dar suporte a várias novas funcionalidades. Inclusive me inspirei um pouco no programa OBS Studio. ;)
deto, agradeço seus novos comentários e por tão breve atuar em seu código, dando a ele novas funcionalidades. Logo que vi na documentação da API a possibilidade de salvar em MP4, alterei seu código para ver se talvez ganhasse um pouco mais de desempenho na questão uso de recursos. Não funcionou, apesar de estar na documentação da API. Devo ter feito alguma coisa errada e foi bom ler seu comentário a respeito do ffmpeg.wasm.
É bem provável que sua ideia de utilizar o módulo em WASM para fazer o trabalho mais pesado proporcione mais eficiência. Não testei e fiquei curioso para saber se o desempenho será melhor que o proporcionado pela API nativa do navegador.
Aproveito para comentar algo a respeito do que deixou no comentário anterior. Em uma das discussões que encontrei em fórums, antigos, havia o pedido de incorporarem à API opções de pausa/continuar e você já conseguiu explorá-los na sua nova UI. Ficou jóia!
No que se refere ao ondataavailable
foi algo que também notei que poderia agir, pois no comentário que li também em fórums, isso gera bastante dado para o processamento lidar. Como a publicação também era antiga, comentavam inclusive da perda de alguns frames.
Ah, agradeço por citar o OBS Studio! Eu lia comentários, ouvia falarem a respeito, mas nunca dei atenção à essa ferramenta que também é opensource!