- Herramienta CLI basada en Node.js creada para ejecutar comandos de ffmpeg en inglés en texto plano, permitiendo editar video con frases simples sin opciones complejas
- Si ingresas un comando en forma de oración, como
ff convert video.mp4 to gif, lo convierte automáticamente a un comando de ffmpeg y lo ejecuta
- Soporta diversas tareas como conversión de formato, compresión, recorte, extracción de audio, redimensionado, ajuste de velocidad, rotación, combinación y más
- Con la opción
--dry-run puedes revisar el comando de ffmpeg por adelantado sin ejecutarlo realmente
- Funciona rápidamente sin conexión y sin IA, y puede usarse con Node.js 16 o superior en entornos donde ffmpeg esté instalado
Resumen
- ezff es un wrapper basado en inglés en texto plano creado para facilitar el uso de ffmpeg
- El usuario puede ingresar comandos en lenguaje natural sin tener que memorizar flags complejos de ffmpeg ni revisar el manual
- Ejemplo:
ff convert video.mp4 to gif → genera y ejecuta automáticamente el comando de ffmpeg
- Requiere Node.js 16 o superior y ffmpeg instalado, y puede instalarse con npm usando
npm install -g ezff
Funciones principales
- Ofrece modo de prompt interactivo
- También soporta modo de entrada directa de comandos
- El usuario puede escribir la tarea deseada en una sola línea
- Ejemplos:
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 tareas compatibles
- Convert (Conversión): cambio de formato (
mp4 → gif, mp4 → mp3)
- Compress (Compresión): establecer límite de tamaño de archivo (
10mb, etc.)
- Trim (Recorte): extraer una sección específica (
from 0:30 to 1:00)
- Extract audio (Extraer audio): separar solo el audio del video
- Resize/Scale (Redimensionar/Escalar): cambiar la resolución (
1280x720, 720p)
- Speed up / Slow down (Acelerar / Ralentizar): cambiar la velocidad de reproducción (
2x)
- Reverse, Mute, Rotate, Flip, Thumbnail, Merge, Grayscale, Denoise, Stabilize y muchas otras tareas
Vista previa de comandos y salida
- Con la opción
--dry-run puedes mostrar solo el comando de ffmpeg sin ejecutarlo realmente
- El archivo resultante se guarda en la misma carpeta que el original con el sufijo
_output (video_output.gif)
Estructura de funcionamiento interno
- El Parser analiza la oración de entrada y extrae la acción, el archivo y las opciones (como el tamaño)
- El Builder mapea esa información a un comando de ffmpeg
- ffmpeg ejecuta el comando real
- Todo el proceso se realiza sin IA ni llamadas a API, de forma offline y basado en pattern matching
Instalación y entorno
- Requiere Node.js 16 o superior
- ffmpeg debe estar instalado en el PATH del sistema
- macOS:
brew install ffmpeg
- Ubuntu/Debian:
sudo apt install ffmpeg
- Windows:
choco install ffmpeg
- Se publica bajo licencia MIT y acepta Pull Requests
Resumen
- ezff es una herramienta CLI simple que elimina la carga de aprender comandos de ffmpeg
- Permite automatizar la edición de video solo con entradas en inglés en texto plano
- Gracias a su funcionamiento offline, ejecución rápida y amplio soporte de funciones, es útil tanto para desarrolladores como para principiantes en edición de video
1 comentarios
Comentarios en Hacker News
Sorprende cuánto se esfuerza la gente por no memorizar el uso básico de ffmpeg
En realidad, ffmpeg no es tan difícil, y el manual explica bien los conceptos clave
Claro, hay riesgos como que la configuración predeterminada provoque recodificación o conserve solo un stream, pero con recordar
-c copysuele bastar para la mayoría de los casosOcultar esos “riesgos” puede crear problemas todavía mayores. Por ejemplo, “ff convert video.mkv to mp4” podría resolverse con un simple remux, pero termina recodificando todo
“ffmpeg extract audio from video.mp4” también recodifica siempre a mp3 y baja la calidad
El multimedia es, por naturaleza, un área compleja, y esconder esa complejidad puede hacer que el usuario aprenda conceptos equivocados
Creo que, más que un wrapper simplificado, lo correcto es enseñarle al usuario los conceptos adecuados con una buena chuleta
Me recuerda a esas discusiones de “¿por qué la gente pobre no consigue simplemente un buen trabajo?”
Aun así, entiendo que lo dices como motivación
Lo que quiero es un script interactivo: que me pregunte “qué quieres hacer”, me genere el comando adecuado y me explique qué significa cada argumento
Ejemplo de lista de opciones
Los problemas que mencionas parecen resolubles con reportes de bugs o propuestas de funciones
Ocultar la configuración de calidad podría hacerse con la intención de que el usuario no tenga que preocuparse por eso
Evitar la recodificación en conversiones simples de contenedor podría resolverse con una tabla de mapeo
Hace poco hice extracción de audio y agregado de miniaturas, y también noté esa falta de mapeo
Al convertir video a gif, siempre uso el filtro palettegen
Junto con comandos de ejemplo, consulto esta entrada de blog relacionada de hace 10 años
Si en un sitio web cambias un gif animado por mp4, queda más pequeño, más fluido y con colores más precisos
Eso podría llevar a ffmpeg al nivel de gifski
Antes, gifski lograba mejor calidad con el mismo tamaño de archivo gracias a esa función
Me gusta este enfoque. Ojalá existiera un sistema operativo que hiciera más amigable para humanos toda la CLI de Linux
Imagino una CLI consistente basada en lenguaje natural, en lugar de comandos tan dispares como
taroddPor ejemplo:
Estaría bien que admitiera autocompletado y distintas formas de expresión. No hace falta llegar a un LLM
Se darían situaciones como “¡ese disco duro no, el otro!” o “¿borrar? ¿borrar de verdad por completo?”
A mí me gusta conservar intactas las características técnicas de Linux
Por ejemplo: Empezó como un wrapper para ffmpeg, pero ahora evolucionó a un asistente CLI de propósito general
La única utilidad real de los chatbots de IA es escribir comandos de ffmpeg
Vas completando el comando que necesitas en conversación, y los que usas seguido los guardas en archivos
.commandEl problema fue creer que se podía crear “inteligencia” con Wikipedia y unos cuantos datos más
Eso sí, debería ser una interfaz tipo tutor que muestre el resultado, permita al usuario revisarlo y aprender
Con un wrapper sencillo para ffmpeg se puede resolver el 90%
No se puede acceder al repositorio de GitHub de ezff
Parece buena idea usar un LLM para ver las opciones sugeridas y luego modificarlas
Eso sí, como hay conflicto de nombres de paquetes, sería mejor usar otro nombre
“ezff” aparece como biblioteca de Python, y “ez-ffmpeg” como biblioteca para Rust
Los LLM son una gran interfaz para ffmpeg
Aunque hay que corregirlos 2 o 3 veces por problemas como la sincronización de subtítulos, pueden generar comandos complejos rápidamente
Me da curiosidad la explicación de “resolver el 90% con 20 patrones comunes”
Quisiera saber si eso lo dijo la IA o si lo dijo directamente el autor
¿npm? Viendo los incidentes de seguridad que explotan cada semana, no quiero meter ese caos en mi entorno de desarrollo
El cambio de paradigma que traerá la IA al final será “hablarle a la computadora en lenguaje natural”
Comandos como “hazme un gif de la escena de cocina de esta película” se volverán realidad
El paradigma actual basado en comandos está destinado a desaparecer pronto
No hace falta menospreciar este tipo de intentos