- Ferramenta de CLI baseada em Node.js criada para executar comandos do ffmpeg em inglês simples, permitindo editar vídeos com frases simples sem opções complexas
- Ao digitar comandos em formato de frase como
ff convert video.mp4 to gif, ele converte automaticamente para um comando ffmpeg e executa
- Suporta várias tarefas, como conversão de formato, compressão, corte, extração de áudio, redimensionamento, ajuste de velocidade, rotação, mesclagem e mais
- Com a opção
--dry-run, é possível visualizar antecipadamente o comando ffmpeg sem executá-lo de fato
- Funciona rapidamente offline, sem conexão com a internet nem IA, e pode ser usado com Node.js 16 ou superior em ambientes com ffmpeg instalado
Visão geral
- ezff é um wrapper baseado em inglês simples criado para facilitar o uso do ffmpeg
- O usuário pode inserir comandos em linguagem natural sem precisar memorizar flags complexas do ffmpeg ou consultar o manual
- Ex.:
ff convert video.mp4 to gif → gera e executa automaticamente o comando ffmpeg
- Requer Node.js 16 ou superior e ffmpeg instalado, podendo ser instalado via npm com
npm install -g ezff
Principais recursos
- Oferece modo de prompt interativo
- Também oferece modo de entrada direta de comando
- O usuário pode descrever a tarefa desejada em uma única linha
- Ex.:
ff convert video.mp4 to mp3
ff compress video.mp4 to 10mb
ff trim video.mp4 from 0:30 to 1:00
ff resize video.mp4 to 1280x720
ff speed up video.mp4 by 2x
Lista de tarefas suportadas
- Conversão (Convert): mudança de formato (
mp4 → gif, mp4 → mp3)
- Compressão (Compress): definição de limite de tamanho do arquivo (
10mb etc.)
- Corte (Trim): extração de um trecho específico (
from 0:30 to 1:00)
- Extração de áudio (Extract audio): separa apenas o áudio do vídeo
- Redimensionamento (Resize/Scale): alteração de resolução (
1280x720, 720p)
- Ajuste de velocidade (Speed up / Slow down): alteração da velocidade de reprodução (
2x)
- Reverso (Reverse), mudo (Mute), rotação (Rotate), espelhamento (Flip), extração de miniatura (Thumbnail), mesclagem (Merge), escala de cinza (Grayscale), redução de ruído (Denoise), estabilização de vídeo (Stabilize) e várias outras tarefas
Pré-visualização de comando e saída
- Com a opção
--dry-run, é possível exibir apenas o comando ffmpeg sem executá-lo
- O arquivo resultante é salvo na mesma pasta do original com o sufixo
_output (video_output.gif)
Estrutura interna de funcionamento
- O Parser analisa a frase de entrada e extrai ação (action), arquivo (file) e opções (como size)
- O Builder mapeia essas informações para um comando ffmpeg
- O ffmpeg executa o comando real
- Todo o processo é feito offline com base em pattern matching, sem IA nem chamadas de API
Instalação e ambiente
- Requer Node.js 16 ou superior
- O ffmpeg deve estar instalado no PATH do sistema
- macOS:
brew install ffmpeg
- Ubuntu/Debian:
sudo apt install ffmpeg
- Windows:
choco install ffmpeg
- Disponibilizado sob a licença MIT, com Pull Requests bem-vindos
Resumo
- ezff é uma ferramenta de CLI simples que elimina a necessidade de aprender comandos do ffmpeg
- Permite automatizar edição de vídeo apenas com entrada em inglês simples
- Com funcionamento offline, execução rápida e suporte a vários recursos, é útil tanto para desenvolvedores quanto para iniciantes em edição de vídeo
1 comentários
Comentários no Hacker News
É impressionante o quanto as pessoas se esforçam para não decorar o uso básico do ffmpeg
Na verdade, o ffmpeg não é tão difícil assim, e o manual explica bem os conceitos principais
Claro, há armadilhas como a configuração padrão provocar recodificação ou manter apenas um stream, mas se você só lembrar de
-c copy, na maioria dos casos não terá problemasEsconder essas “armadilhas” pode acabar criando problemas ainda maiores. Por exemplo, “ff convert video.mkv to mp4” poderia ser resolvido com um simples remux, mas acaba recodificando tudo
“ffmpeg extract audio from video.mp4” também sempre recodifica para mp3, o que reduz a qualidade
Multimídia é, por natureza, uma área complexa, então esconder essa complexidade pode fazer o usuário aprender conceitos errados
Acho que, em vez de wrappers simplificados, o certo é ensinar os conceitos corretos ao usuário com uma boa cola de referência
Isso me lembra discussões do tipo “por que as pessoas pobres simplesmente não arrumam um emprego bom?”
Ainda assim, entendo que o que você disse foi no sentido de motivar
O que eu quero é um script interativo. Algo que pergunte “o que você quer fazer?”, monte o comando adequado e explique o significado de cada argumento
Exemplo de lista de opções
Os problemas que você mencionou talvez pudessem ser resolvidos com relatórios de bug ou sugestões de funcionalidade
Esconder as configurações de qualidade pode ser uma tentativa de fazer com que o usuário não precise conhecê-las
Evitar recodificação em conversões simples de contêiner pode ser tratado com uma tabela de mapeamento
Recentemente também senti falta desse tipo de mapeamento ao extrair áudio e adicionar miniaturas
Ao converter vídeo para gif, sempre uso o filtro palettegen
Junto com um comando de exemplo, consulto este post de blog relacionado de 10 anos atrás
Se você trocar gifs animados por mp4 em um site, eles ficam menores, mais suaves e com cores mais fiéis
Nesse caso, o ffmpeg poderia chegar ao nível do gifski
Antigamente o gifski conseguia qualidade melhor com o mesmo tamanho de arquivo por causa desse recurso
Gosto dessa abordagem. Queria que existisse um SO que tornasse toda a CLI do Linux mais amigável para humanos
Em vez de comandos inconsistentes como
taredd, imagino uma CLI uniforme baseada em linguagem naturalExemplo:
Seria bom ter autocompletar e suporte a várias formas de expressão. Nem precisaria de LLM
Aparecem situações como “não esse disco rígido, o outro!” ou “mandou apagar, mas apagar de verdade mesmo?”
Eu gosto de preservar as características técnicas do Linux como elas são
Exemplo: Ele começou como um wrapper para ffmpeg, mas agora evoluiu para um assistente de CLI genérico
A única utilidade real dos chatbots de IA é escrever comandos do ffmpeg
Você vai conversando até chegar ao comando necessário e salva os que usa com frequência em arquivos
.commandO problema foi achar que daria para criar “inteligência” só com Wikipédia e alguns outros dados
Mas a interface precisa ser do tipo tutor, mostrando o resultado para o usuário confirmar e aprender
Com um wrapper simples para ffmpeg já dá para resolver 90% dos casos
Não consigo acessar o repositório ezff no GitHub
Acho melhor usar um LLM para sugerir as opções e depois revisar e ajustar
Mas é melhor escolher outro nome, porque há conflito de nome de pacote
“ezff” aparece como biblioteca Python, e “ez-ffmpeg” como biblioteca para Rust
LLM é uma ótima interface para ffmpeg
Embora às vezes seja preciso corrigir 2 ou 3 vezes por causa de coisas como sincronização de legendas, ele consegue gerar comandos complexos rapidamente
Fiquei curioso com a explicação de “20 padrões comuns cobrem 90% dos casos”
Queria saber se isso foi dito pela IA ou pelo próprio autor
npm? Vendo os incidentes de segurança acontecendo toda semana, não quero trazer esse caos para o meu ambiente de desenvolvimento
A mudança de paradigma que a IA vai trazer no fim é falar com o computador em linguagem natural
Comandos como “faça um gif da cena de culinária deste filme” vão se tornar realidade
O paradigma atual baseado em comandos está fadado a desaparecer em breve
Não há motivo para menosprezar esse tipo de iniciativa