O Frame é um conversor de mídia nativo desenvolvido em Rust, que oferece uma interface gráfica para operações com o FFmpeg. O objetivo do projeto é proporcionar controle granular sobre vídeo, áudio, imagens, legendas e metadados, combinando um front‑end GPUI‑CE com um núcleo de conversão reutilizável.
Principais funcionalidades
- Suporte a múltiplos tipos de mídia: vídeo, áudio e imagens, com ampla variedade de formatos de entrada e saída.
- Codificadores avançados: H.264, H.265, VP9, AV1 (SVT‑AV1), Apple ProRes, além de aceleração por hardware (videotoolbox, NVENC).
- Controle detalhado: taxa de bits, CRF, resolução, FPS, escala, corte, rotação, sobreposição de imagens, ajustes de GIF, opções de áudio (bitrate, VBR, canais) e manipulação completa de legendas e metadados.
- Processamento concorrente: gerenciamento de filas de tarefas FFmpeg com limitação de processos simultâneos.
- Telemetria em tempo real: logs e progresso do FFmpeg são analisados e exibidos na interface.
Interface (UI)
A aplicação utiliza o GPUI‑CE, oferecendo:
- Barra de título customizada.
- Áreas de workspace e logs.
- Painéis de configurações detalhadas para cada tipo de mídia.
- Diálogos nativos (via
rfd) com filtros de extensão, facilitando a seleção de arquivos suportados.
Arquitetura e fluxo de trabalho
- Núcleo de conversão (
frame-core): gera argumentos para o FFmpeg, valida compatibilidade e realiza inspeção de fontes comffprobe. - Camada de UI: consome o núcleo e apresenta opções ao usuário.
- Execução: tarefas são enfileiradas e controladas por um controlador de tarefas em Rust.
- Feedback: progresso e logs são parseados em tempo real, permitindo monitoramento detalhado.
Comparativo rápido
| Recurso | Frame | HandBrake | FFmpeg (CLI) |
|---|---|---|---|
| Interface gráfica nativa | ✅ | ✅ | ❌ |
| Suporte a aceleração HW avançada | ✅ (NVENC, videotoolbox) | ✅ (NVENC) | ✅ |
| Controle de GIFs | ✅ | ❌ | ✅ (via scripts) |
| Gerenciamento de filas | ✅ | ❌ | ❌ |
| Necessidade de linha de comando | Não | Parcial | Sim |
O Frame se destaca por combinar a potência do FFmpeg com uma UI moderna, algo que o HandBrake oferece parcialmente, mas sem a flexibilidade de filas e controle de GIFs.
Público-alvo
- Profissionais de pós‑produção que precisam de conversões rápidas com ajustes finos.
- Desenvolvedores que desejam integrar um conversor de mídia em pipelines personalizados.
- Entusiastas de código aberto que preferem ferramentas nativas e escritas em Rust.
Instalação
Binários pré‑compilados
Disponíveis na página de releases: Download Latest Release.
- Windows:
winget install --id 66HEX.Frame -e - macOS:
brew tap 66HEX/frame && brew install --cask frame
Compilação a partir do código
Requer Rust e ferramentas de compilação C/C++. Após clonar o repositório, execute:
cargo xtask setup-ffmpeg # baixa binários FFmpeg/FFprobe
cargo xtask run # modo desenvolvimento
cargo xtask build --release # compilação final
Avisos de assinatura
O aplicativo ainda não está assinado com Developer ID (macOS) ou certificado de código (Windows). Em macOS, pode ser necessário remover a quarentena:
xattr -dr com.apple.quarantine /Applications/Frame.app
No Windows, o SmartScreen pode bloquear a execução; escolha “Mais informações” → “Executar mesmo assim”.
Atualizações automáticas
O Frame inclui um atualizador que verifica o manifesto de releases no GitHub, valida assinatura Ed25519 e hash SHA‑256 antes de instalar. As chaves de assinatura são configuradas via variáveis de ambiente FRAME_UPDATE_PUBLIC_KEY e FRAME_UPDATE_SIGNING_KEY nos pipelines de CI.
Pontos positivos
- Interface fluida e moderna, sem necessidade de linha de comando.
- Extenso suporte a codecs e formatos, incluindo aceleração por hardware.
- Controle detalhado de parâmetros de vídeo, áudio e legendas.
- Gerenciamento de filas permite executar múltiplas conversões simultâneas.
Pontos negativos
- Falta de assinatura de código pode gerar alertas de segurança.
- Ainda em fase inicial; documentação ainda limitada.
- Dependência de binários FFmpeg externos pode gerar incompatibilidades em sistemas sem as versões corretas.
Conclusão
O Frame oferece uma solução robusta e flexível para conversão de mídia, combinando a potência do FFmpeg com uma UI nativa em Rust. Apesar dos alertas de assinatura, a ferramenta é recomendada para usuários avançados que buscam controle fino e integração fácil em fluxos de trabalho de pós‑produção. Para quem precisa apenas de conversões simples, ferramentas como HandBrake podem ser suficientes, mas o Frame se destaca em cenários que exigem automação, múltiplas filas e ajustes avançados.