2 puntos por GN⁺ 2025-12-28 | 1 comentarios | Compartir por WhatsApp
  • 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
    • Si escribes solo el comando ff, pregunta secuencialmente por la ruta del archivo, el tipo de tarea, el formato de salida, etc.
    • Ejemplo:
      ? File path: video.mp4  
      ? What do you want to do? › Convert format  
      ? Convert to: › GIF  
      
    • Tras seleccionar las opciones, el comando de ffmpeg se genera y ejecuta automáticamente
  • 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
    • Ejemplo:
      ff convert video.mp4 to gif --dry-run  
      → ffmpeg -i video.mp4 -vf fps=15,scale=480:-1:flags=lanczos -loop 0 -y video_output.gif
      
  • 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

 
GN⁺ 2025-12-28
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 copy suele bastar para la mayoría de los casos
    Ocultar 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

    • Hay que tener cuidado con decir “no es tan difícil”. Lo difícil es distinto para cada persona
      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
    • Yo también uso ffmpeg como una vez al año; calculo que en unos 350 años ya me habré memorizado toda la sintaxis
    • Para quien lo usa seguido quizá sea fácil, pero para alguien como yo, que lo usa una vez cada uno o dos meses, se siente difícil
      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
    • Decir “no es tan difícil” suena a broma. ffmpeg tiene miles de opciones
      Ejemplo de lista de opciones
    • Yo también digo que el empaquetado de Python “no es tan difícil”, pero los comandos de ffmpeg se sienten casi como un lenguaje propio
      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

    • Hoy en día muchas veces se usa mal la palabra “gif”. En realidad, mp4 es más eficiente
      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
    • Integrar pngquant como filtro de ffmpeg quizá permitiría crear una mejor paleta
      Eso podría llevar a ffmpeg al nivel de gifski
    • Me pregunto si ffmpeg ya agregó soporte para paletas por fotograma
      Antes, gifski lograba mejor calidad con el mismo tamaño de archivo gracias a esa función
    • gifski es una buena alternativa porque reconoce bien la paleta
    • Es una lástima que esta configuración no sea la predeterminada
  • 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 tar o dd
    Por ejemplo:

    zip my-folder into my-zip.tar with compression level 9  
    write my-iso ./zip.zip onto external hard drive  
    git delete commit 1a4db4c  
    convert ./video.mp4 and ./audio.mp3 into ./out.mp4  
    merge ./video.mp4 and ./audio.mp3 to ./out.mp4 without re-encoding
    

    Estaría bien que admitiera autocompletado y distintas formas de expresión. No hace falta llegar a un LLM

    • Pero en esos comandos en lenguaje natural el problema es la ambigüedad
      Se darían situaciones como “¡ese disco duro no, el otro!” o “¿borrar? ¿borrar de verdad por completo?”
    • Si no te gusta ese enfoque, entonces usa Windows o macOS.
      A mí me gusta conservar intactas las características técnicas de Linux
    • Existe un script helpme que implementó esa idea de verdad
      Por ejemplo:
      helpme ffmpeg assemble all the .jpg files into an .mp4 timelapse video at 8fps
      helpme zip my-folder into my-zip.tar with compression level 9
      helpme git delete commit 1a4db4c
      
      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 .command

    • Los LLM son un avance asombroso en el análisis de lenguaje natural
      El problema fue creer que se podía crear “inteligencia” con Wikipedia y unos cuantos datos más
    • Suena pesimista, pero los LLM sí sirven para convertir descripciones de texto del usuario en comandos o SQL
      Eso sí, debería ser una interfaz tipo tutor que muestre el resultado, permita al usuario revisarlo y aprender
    • La IA de antes no manejaba bien efectos bounce como “reproducir el video de 0:00 a 0:03 y luego repetirlo al revés”
    • Aun así, este tipo de interfaz parece un ejemplo de ineficiencia que desperdicia recursos de GPU
      Con un wrapper sencillo para ffmpeg se puede resolver el 90%
  • No se puede acceder al repositorio de GitHub de ezff

    • A mí también me sale error 404. Parece que el problema es el enlace al final de la página de npm
    • Aun así, se puede ver en la pestaña de código de npm
  • 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

    • Aun así, el valor de las herramientas consistentes y comprobadas sigue existiendo
      No hace falta menospreciar este tipo de intentos