Pitch: Vayou — Player de Vídeo Nativo que Traduz a Legenda Sozinho (Rust + Slint)
Fiz um player de vídeo para Windows e Linux em Rust + Slint. Ele existe por dois motivos: traduzir legenda sem eu sair do player e não pesar.

Legenda
Você abre um filme que só tem legenda em inglês e escolhe o idioma. O app extrai a faixa embutida com ffmpeg, traduz em blocos e devolve como faixa externa, preservando a formatação ASS — posição, cor, itálico. São 12 idiomas, e dá para fixar um: aí ele faz isso sozinho a cada arquivo que você abre.
Arquivo sem legenda nenhuma? Busca e baixa do OpenSubtitles de dentro do player. E ele lembra qual faixa de áudio e de legenda você escolheu por arquivo — não um ajuste global que você refaz a cada episódio.
Performance
O Vayou nasceu em Tauri + Svelte: um WebView desenhando controles por cima de um vídeo, com RAM de navegador. Reescrevi do zero em Rust nativo — um processo só, sem WebView. Escolhi o Slint justamente para ter versão Linux: o mesmo código roda nos dois sistemas, e só a moldura da janela tem implementação separada.
Não existe janela de vídeo separada. O mpv roda com vo=libmpv e desenha dentro do mesmo framebuffer OpenGL que o Slint usa: o femtovg limpa o back buffer, o mpv desenha o frame com as legendas, e o Slint pinta a UI por cima com fundo transparente onde tem vídeo. Uma janela, um swapchain, nenhum frame passeando pela CPU só para chegar na tela.
A armadilha que me custou mais tempo: no Linux, o contexto de render precisa receber o display X11/Wayland. Sem isso o libmpv não abre um VA display e cai para decodificação por software em silêncio — sem erro, sem aviso, o único sintoma é a CPU no talo.
O resto
| Reprodução | velocidade 0.25–4×, frame a frame, loop A–B, capítulos, abrir por URL, retomar de onde parou, sleep timer |
| Áudio | múltiplas faixas, equalizador com presets, normalização, boost até 200%, delay |
| Vídeo | brilho/contraste/saturação, aspect ratio, desentrelaçamento, zoom e pan |
| Janela | sem borda, sempre no topo, drag & drop, atalhos remapeáveis, 12 idiomas de interface |
Sendo honesto
- MIT, código aberto. Instalador por usuário, sem admin — mas sem assinatura, então o SmartScreen avisa na primeira execução.
- O instalador do Windows não é leve: o binário tem 8,8 MB, mas carrega libmpv e ffmpeg junto porque o Windows não tem nenhum dos dois. No Linux os dois vêm da distro.
- A tradução usa um endpoint não oficial do Google Translate. Pode limitar sem aviso — o app diz quando um trecho não foi traduzido em vez de fingir que foi.
- Sempre no topo é só X11. No Wayland quem empilha janela é o compositor, e o app fala isso em vez de deixar o botão aceso sobre uma janela que não subiu.
Links
- Download: https://github.com/0hgawa/vayou-slint/releases/latest
- Código: https://github.com/0hgawa/vayou-slint
No Arch, onde o pacote consegue declarar que precisa de libmpv e ffmpeg:
curl -O https://raw.githubusercontent.com/0hgawa/vayou-slint/master/installer/PKGBUILD
makepkg -si
Feedback é bem-vindo, principalmente de quem rodar GPU AMD no Linux — é a combinação que eu menos consigo testar aqui.



