Sobre el proyecto

FreeCut es un editor de video multipista basado en navegador con licencia MIT. No requiere instalación y no sube medios: los proyectos y medios permanecen locales, mientras que la edición, previsualización, análisis, transcripción, generación con IA y exportación se ejecutan en el navegador mediante WebGPU, WebCodecs, Web Workers, OPFS y la File System Access API. Los proyectos, metadatos de medios vinculados, miniaturas, formas de onda, recursos de IA generados, transcripciones, cortes de escena y cachés se escriben como archivos simples dentro de una carpeta de espacio de trabajo elegida en el disco. Edición y línea de tiempo - Línea de tiempo multipista compatible con elementos de video, audio, texto, imagen, forma, máscara, Lottie y clips compuestos. - Varias líneas de tiempo por proyecto como Secuencias con pestañas, unificadas con clips compuestos. - Edición vinculada de audio/video con herramientas de dividir, unir, ripple, rolling, slip, slide y estiramiento de velocidad. - Transiciones centradas en el corte con redimensionado en vivo, alineación, anclaje al tiempo de origen y superposiciones de previsualización. - Controles de silencio/visibilidad/bloqueo de pistas, insignias de sincronización vinculadas, empuje/tracción de pistas y flujos de cierre de huecos. - Miniaturas de tira de película, formas de onda estéreo, guías de ajuste, marcadores, código de tiempo y deshacer/rehacer. - Monitor de origen con marcas de entrada/salida, destinos de parcheo, ediciones de inserción y sobrescritura. - Plantillas de proyecto, ajuste automático de lienzo/FPS desde el primer medio, atajos de teclado configurables. Previsualización y reproducción - Previsualización en tiempo real con transformación, recorte, corner-pin, máscara y gizmos de grupo. - Reproducción precisa por fotograma mediante un Clock personalizado y un runtime de composición. - Superposiciones rápidas al desplazar, precalentamiento de decodificadores, calidad de previsualización adaptativa y calentamiento de fuentes. - Paneles de edición two-up y four-up para operaciones ripple, rolling, slip y slide. - Ámbitos de color por GPU: forma de onda, vectorscopio e histograma. - Bus maestro del proyecto y volumen de monitor/dispositivo separados. Audio - Volumen de clip, fundidos de audio, faders de pista, fader del bus maestro y medidores LED estéreo. - Cambio de tono por clip en semitonos/centavos con reproducción de previsualización SoundTouch. - Etapas de EQ de clip y EQ de pista, incluido un panel flotante compacto de EQ de seis bandas. - Rutas de audio de tono, EQ, fundidos, volumen y transiciones preservadas en previsualización y exportación. Efectos, máscaras y composición - Rutas de efectos visuales y composición con WebGPU primero, con alternativas cuando es práctico. - Desenfoque: gaussiano, de caja, de movimiento, radial, zoom. - Color: brillo, contraste, exposición, cambio de tono, saturación, vibrance, temperatura/tinte, niveles, curvas, ruedas de color, mapa de degradado, LUT (.cube), escala de grises, sepia, invertir. - Distorsión: pixelado, separación RGB, remolino, onda, abultar/pellizcar, caleidoscopio, espejo, vidrio estriado, vidrio ondulado, mosaico de vidrio, droste. - Estilización: viñeta, grano de película, enfocar, posterizar, resplandor, detección de bordes, líneas de escaneo, semitono, arte ASCII, glitch de color, glitch de bloques, VHS, CRT, tinta, ordenación de píxeles. - Keying: chroma key con tolerancia, suavidad y supresión de derrame. - 25 modos de fusión, incluidos multiplicar, trama, superponer, luz suave, diferencia, tono, saturación, color y luminosidad. - Máscaras de clip y trazados de pluma con transformaciones de geometría animables por keyframes. - Selector de color con entrada hexadecimal y alfa, además de cuentagotas integrado con lupa. Transiciones - Transiciones de fundido, barrido, deslizamiento, giro 3D, barrido de reloj e iris con variantes direccionales. - Disolvencia, destellos, glitch, fuga de luz, pixelado, aberración cromática y desenfoque radial. - Duración ajustable, alineación, anclaje de origen y alternativa Canvas 2D para rutas sin WebGPU. Animación por keyframes - Editor de gráficos Bezier, dopesheet, vista dividida y superposiciones multicurva. - Preajustes de easing (lineal, ease-in/out, cubic-bezier, spring) con editor de previsualización en vivo y preajustes personalizados guardados. - Modificadores de movimiento procedurales (deriva, balanceo, respiración, giro, sacudida) evaluados en tiempo de render, con bake a keyframes en un clic. - Texto en movimiento: animación de texto por carácter, por palabra y por línea. - Modo de keyframe automático, espejo de tangentes, acordeones de propiedades y selección por marco. - Propiedades animadas de transformación, recorte, máscara, texto, efectos y color. Medios e importación - Importa videos, audio, imágenes, GIF, SVG, animaciones Lottie y recursos generados sin copiar los originales. - Edita animaciones Lottie importadas (.json y .lottie): reasigna colores y temas, edita texto, ajusta ranuras de valores con previsualización en vivo. - Decodificación Apple ProRes para importación, previsualización y miniaturas, incluidas variantes que los navegadores no pueden decodificar de forma nativa. - Generación de proxies, extracción de miniaturas, caché de formas de onda y revinculación de medios. IA local y análisis - Se ejecuta en el dispositivo dentro del navegador; no se sube nada. - Transcripción en el dispositivo con el motor Parakeet (alternativa Whisper) y elementos de texto de subtítulos generados. - Subtitulado con IA mediante proveedores locales de visión-lenguaje y cadencia de muestreo configurable. - Detección de escenas con histograma rápido o análisis de contenido adaptativo preciso por fotograma y verificación opcional por modelo. - Navegador de escenas para buscar medios subtitulados y reutilizar momentos detectados. - Voces en off con texto a voz local Kokoro. - Generación musical local MusicGen con preajustes, progreso y cancelación. - Caché de modelos local y controles de descarga en la configuración. Proyectos y almacenamiento - Persistencia de carpeta de espacio de trabajo mediante la File System Access API. - Conmutador multi-espacio de trabajo con gestión de espacios conocidos. - Proyectos almacenados como archivos simples en disco, con migración desde almacenamiento heredado del navegador. - Flujos de eliminación suave, restauración, vaciado de papelera y eliminación permanente de proyectos. - Exportación/importación de paquetes ZIP de proyecto con esquemas validados por Zod. - Guardado automático, miniaturas de proyecto, espejo de caché del espacio de trabajo y limpieza de huérfanos. Exportación - Renderizado en el navegador mediante WebCodecs y rutas de render respaldadas por workers. - Exporta cualquier secuencia, no solo la línea de tiempo principal. - Contenedores de video: MP4, WebM, MOV, MKV. - Códecs de video: H.264, H.265, VP8, VP9, AV1 (donde el navegador proporciona un codificador). - Formatos de exportación de audio: MP3, AAC, WAV/PCM. - Subtítulos: desactivados, incrustados, archivo sidecar o pista suave embebida (según contenedor). - Preajustes de calidad de baja a ultra, con comprobaciones de capacidad en tiempo de ejecución y alternativas. Primeros pasos Los requisitos son Node.js 22+ recomendado, npm 11+ y un navegador Chromium moderno. Clona el repositorio, ejecuta npm install y npm run dev, luego abre http://localhost:5173 en Chrome, Edge, Brave o Arc. El flujo es: elegir una carpeta de espacio de trabajo, crear un proyecto, importar medios arrastrando archivos a la biblioteca de medios, arrastrar clips a la línea de tiempo y editar, luego exportar directamente desde el navegador. Compatibilidad de navegadores Se recomienda Chrome o Edge 113+. FreeCut depende de WebGPU, WebCodecs, OPFS y la File System Access API, por lo que se requiere un navegador Chromium moderno para el flujo completo. Brave puede desactivar la File System Access API; se puede habilitar mediante brave://flags/#file-system-access-api. Stack tecnológico React 19 y TypeScript, Vite+ para dev/build/lint/format/check/tests, Vite con @vitejs/plugin-react, WebGPU para efectos, composición, transiciones, máscaras, ámbitos y aceleración de IA, WebCodecs para pipelines de previsualización y exportación, File System Access API y OPFS para persistencia y cachés, Zustand con Zundo para estado y deshacer/rehacer, TanStack Router para enrutado tipado basado en archivos, Tailwind CSS 4 con Radix UI y componentes estilo shadcn, Mediabunny para decodificación de medios, metadatos y codificación de audio, Transformers.js para modelos de IA locales en el navegador, Kokoro.js para texto a voz con WebGPU, y Web Workers y AudioWorklets para procesamiento de medios fuera del hilo principal. Desarrollo La mayoría de los comandos son scripts npm respaldados por vite-plus (vp): npm run dev (puerto 5173), build, preview, perf, lint (Oxlint), format (Oxfmt), test:run, verify (puerta completa que incluye comprobaciones de arquitectura y código muerto, contratos headless de Node, regresión de Chrome con harness compilado, operaciones de edición públicas y renderizado generado de medios/audio), headless:test y routes. Los efectos con GPU real siguen siendo una puerta explícita de operador/release porque la CI alojada de PR no proporciona un adaptador WebGPU portátil. El árbol src/ se organiza en features/ (módulos de UI orientados al usuario), runtime/ (motores de reproducción y renderizado), infrastructure/ (adaptadores de plataforma para GPU, análisis, audio, navegador, almacenamiento, miniaturas), shared/ (primitivas agnósticas del framework y estado entre features), además de app/, components/, config/, routes/ y types/. Contribución y licencia Las prioridades actuales son correcciones de errores, luego mejoras de rendimiento para el editor en vivo, reproducción y exportaciones, y después nuevas funciones que se hayan discutido primero. Los errores pueden reportarse mediante issues de GitHub con pasos reproducibles, versión del navegador y capturas o grabaciones; los informes de rendimiento deben incluir el flujo de trabajo, detalles de los medios de origen, tamaño del proyecto y cuándo comienzan las ralentizaciones. Las ideas de funciones se discuten en Discord o GitHub Discussions antes de implementarlas. Licencia MIT.