maniadiaz/EditFlow

Desktop video editing and processing application powered by .NET and FFmpeg.

C#

0

95 commits

updated Sep 23, 2026

See the code

README

EditFlow

Editor de video de escritorio — nativo, ligero y multiplataforma.

CI License: GPL v3 .NET Avalonia


Qué es

EditFlow es un editor de video de escritorio al estilo de CapCut o Premiere, construido con interfaz nativa —sin HTML ni WebView de por medio— sobre un único código base que corre en Windows, Linux y macOS.

El objetivo es que sea ligero: arranque rápido, poca memoria y codificación acelerada por hardware cuando la máquina lo permita.

Funcionalidades

  • Importar y unir uno o varios videos en una timeline.
  • Cortar y seccionar clips: dividir en el cabezal, recortar arrastrando los bordes, reordenar.
  • Exportar en 480p, 720p, 1080p, 1440p y 4K.
  • Elegir el motor de codificación: GPU (NVENC de NVIDIA, Quick Sync de Intel, AMF de AMD, VideoToolbox de Apple) o CPU (x264, x265, SVT-AV1).
  • Control total del bitrate: calidad constante (CRF/CQ), VBR con bitrate objetivo, o CBR.
  • Deshacer y rehacer en toda operación de edición.

Hoja de ruta

VersiónAlcanceEstado
v0.1.0Importar · unir · cortar · previsualizar · exportar✅ Publicada
v0.2.0Proyectos guardados · reproductor propio · audio multipista mezclado · copias de edición✅ Publicada
v0.3.0Pantalla de inicio · editor rehecho · audio recortable con forma de onda · miniaturas · roll/slip/slide✅ Publicada
v0.4.0Capas de video, textos e imágenes · subtítulos automáticos y traducción · ajuste de color · copia de preview · exportar dividido en partes✅ Publicada
v0.5.0Transiciones, velocidad, recorte con tiradores, fuentes, filtros, fundidos, animaciones y audio profesional✅ Publicada
v0.6.0Chroma key · keyframes de posición, escala, opacidad y volumen · color avanzado (curvas, ruedas, LUT, histograma) · carpetas, etiquetas y reconexión de archivos✅ Publicada
v0.6.2Instalador de Windows en un .exe, con la aplicación y FFmpeg dentro✅ Publicada
v0.7.0Edición basada en texto: borrar palabras desde el transcript, quitar silencios y generar un rough cut🚧 Siguiente

El plan completo, con las decisiones de arquitectura y su justificación, está en docs/PLAN.md. La comparación función por función con Premiere Pro, clasificada por lo que es alcanzable y lo que no, está en docs/PARIDAD-PREMIERE.md.

Stack

ComponenteTecnología
Runtime.NET 10 (LTS)
InterfazAvalonia 11.3.x — nativa, renderizada con Skia sobre GPU
Motor de videoFFmpeg, invocado como proceso externo
PreviewLibVLCSharp
MVVMCommunityToolkit.Mvvm
TestsxUnit

Nota de versión: Avalonia está fijado al rango [11.3.13,12.0.0) porque LibVLCSharp.Avalonia todavía no soporta la rama 12.x. El reproductor está aislado tras la interfaz IPreviewPlayer para que esa migración, cuando llegue, no afecte al resto de la aplicación.

Compilar desde el código

Requisitos

  • .NET 10 SDK o superior
  • FFmpeg y ffprobe (se obtienen con el script incluido)

Pasos

git clone https://github.com/maniadiaz/EditFlow.git
cd EditFlow

Descarga FFmpeg y verifica su SHA-256 contra el hash fijado en tools/ffmpeg.lock.json:

REM Windows
tools\fetch-ffmpeg.cmd
# Linux y macOS
pwsh tools/fetch-ffmpeg.ps1

En Windows se usa el envoltorio .cmd porque pwsh es PowerShell 7 y no viene instalado con el sistema: solo está Windows PowerShell 5.1, que se invoca como powershell.exe. El envoltorio además evita la política de ejecución que bloquea los .ps1 por defecto.

Después, lo de siempre:

dotnet restore
dotnet build
dotnet test
dotnet run --project src/EditFlow.App

Publicar

dotnet publish src/EditFlow.App -c Release -r win-x64   --self-contained -p:PublishTrimmed=true
dotnet publish src/EditFlow.App -c Release -r linux-x64 --self-contained -p:PublishTrimmed=true
dotnet publish src/EditFlow.App -c Release -r osx-arm64 --self-contained -p:PublishTrimmed=true

Sobre el recorte: PublishTrimmed desactiva la serialización JSON por reflexión. Si alguna vez vuelve a usarse JsonSerializer sin un contexto generado en compilación, la aplicación publicada morirá al arrancar con un error que no aparece al compilar ni en los tests. La única red es publicar y abrirla.

Instalador de Windows

tools\installer\build.cmd 0.6.0

Publica la aplicación, la empaqueta con FFmpeg y deja un único .exe en artifacts/installer/. Hace falta Inno Setup:

winget install --id JRSoftware.InnoSetup

El instalador se instala para el usuario actual, en %LOCALAPPDATA%\Programs\EditFlow, sin pedir permisos de administrador. Lleva dentro la aplicación (no hace falta tener .NET) y FFmpeg; los modelos de subtítulos y traducción no, que se descargan la primera vez que se usan y viven en %LOCALAPPDATA%\EditFlow\speech. Desinstalar borra las cachés pero deja esa carpeta: son cientos de MB que cuesta un rato volver a bajarse, así que se borra a mano si se quiere.

Instalador~120 MB
Instalado~425 MB (de los cuales 180 son FFmpeg y 198 LibVLC)

Al terminar, el instalador comprueba que FFmpeg arranca de verdad antes de darse por bueno. No basta con que los archivos estén en su sitio: pueden estar completos, con el hash correcto, y aun así no poder ejecutarse. Si no arranca, el instalador lo dice en ese momento en vez de dejar que la aplicación falle después con un código de error.

No está firmado. Windows SmartScreen avisará al abrirlo: Más información → Ejecutar de todas formas. Eso es un aviso y se salta con un clic.

Un equipo con Smart App Control activado es otra cosa: bloquea sin dar opción, y compilar desde el código tampoco lo evita, porque lo que bloquea es FFmpeg. Solo se activa solo en instalaciones limpias de Windows 11, así que la mayoría de equipos no lo tienen. Si EditFlow no abre, empieza por aquí: docs/SMART-APP-CONTROL.md.

Si algo no arranca

tools\check-ffmpeg.cmd

Ejecuta FFmpeg, hace una codificación real y, si falla, distingue entre un bloqueo del Control de aplicaciones y un binario dañado, en vez de dejar un código de error a secas. Sale con 0 si todo va bien, 2 si no encuentra FFmpeg, 3 si lo bloquea Smart App Control y 4 si el binario está roto. El mismo script viaja dentro de la instalación, en %LOCALAPPDATA%\Programs\EditFlow\tools\.

Al publicar un tag v*.*.*, el workflow release.yml construye el instalador y lo cuelga de la release de GitHub con su SHA-256.

Contribuir

El proyecto sigue Git Flow, Conventional Commits y SemVer. Los detalles están en CONTRIBUTING.md.

Tras clonar, activa los hooks del repositorio:

git config core.hooksPath .githooks

Validan el formato de los mensajes de commit y bloquean que datos sensibles entren al historial.

Licencia

GPL-3.0-or-later — ver LICENSE.

EditFlow es software 100 % libre y gratuito. Puedes usarlo, estudiarlo, modificarlo y redistribuirlo. A cambio, cualquier versión derivada que distribuyas debe conservar tu aviso de copyright y publicar también su código fuente bajo la misma licencia.

Es la misma elección que hacen Shotcut y Kdenlive, y por el mismo motivo: permite empaquetar la build completa de FFmpeg —con x264 y x265— sin ninguna ambigüedad legal, y garantiza que el proyecto siga siendo libre para quien venga después.

Nada propietario

El proyecto no depende de ningún componente de pago, servicio externo ni SDK con licencia:

ComponenteLicencia
.NET, Avalonia, NAudio, CommunityToolkit.Mvvm, SkiaSharpMIT
xUnitApache-2.0
FFmpeg (build completa, con x264 y x265)GPL-2.0-or-later
whisper.cpp y los modelos de Whisper (subtítulos automáticos, se descargan bajo demanda)MIT
llama.cpp (traducción de subtítulos, se descarga bajo demanda)MIT
Qwen3.5 4B (modelo de traducción, se descarga bajo demanda)Apache-2.0

Quedan deliberadamente fuera del proyecto los formatos de cámara RAW que exigen el SDK del fabricante (RED, ARRIRAW, Blackmagic RAW) y cualquier integración con servicios de pago. El detalle está en docs/PARIDAD-PREMIERE.md.


GPL-3.0-or-later © 2026 maniadiaz

maniadiaz/EditFlow

Desktop video editing and processing application powered by .NET and FFmpeg.

C#

0

95 commits

updated Sep 23, 2026

See the code

README

EditFlow

Editor de video de escritorio — nativo, ligero y multiplataforma.

CI License: GPL v3 .NET Avalonia


Qué es

EditFlow es un editor de video de escritorio al estilo de CapCut o Premiere, construido con interfaz nativa —sin HTML ni WebView de por medio— sobre un único código base que corre en Windows, Linux y macOS.

El objetivo es que sea ligero: arranque rápido, poca memoria y codificación acelerada por hardware cuando la máquina lo permita.

Funcionalidades

  • Importar y unir uno o varios videos en una timeline.
  • Cortar y seccionar clips: dividir en el cabezal, recortar arrastrando los bordes, reordenar.
  • Exportar en 480p, 720p, 1080p, 1440p y 4K.
  • Elegir el motor de codificación: GPU (NVENC de NVIDIA, Quick Sync de Intel, AMF de AMD, VideoToolbox de Apple) o CPU (x264, x265, SVT-AV1).
  • Control total del bitrate: calidad constante (CRF/CQ), VBR con bitrate objetivo, o CBR.
  • Deshacer y rehacer en toda operación de edición.

Hoja de ruta

VersiónAlcanceEstado
v0.1.0Importar · unir · cortar · previsualizar · exportar✅ Publicada
v0.2.0Proyectos guardados · reproductor propio · audio multipista mezclado · copias de edición✅ Publicada
v0.3.0Pantalla de inicio · editor rehecho · audio recortable con forma de onda · miniaturas · roll/slip/slide✅ Publicada
v0.4.0Capas de video, textos e imágenes · subtítulos automáticos y traducción · ajuste de color · copia de preview · exportar dividido en partes✅ Publicada
v0.5.0Transiciones, velocidad, recorte con tiradores, fuentes, filtros, fundidos, animaciones y audio profesional✅ Publicada
v0.6.0Chroma key · keyframes de posición, escala, opacidad y volumen · color avanzado (curvas, ruedas, LUT, histograma) · carpetas, etiquetas y reconexión de archivos✅ Publicada
v0.6.2Instalador de Windows en un .exe, con la aplicación y FFmpeg dentro✅ Publicada
v0.7.0Edición basada en texto: borrar palabras desde el transcript, quitar silencios y generar un rough cut🚧 Siguiente

El plan completo, con las decisiones de arquitectura y su justificación, está en docs/PLAN.md. La comparación función por función con Premiere Pro, clasificada por lo que es alcanzable y lo que no, está en docs/PARIDAD-PREMIERE.md.

Stack

ComponenteTecnología
Runtime.NET 10 (LTS)
InterfazAvalonia 11.3.x — nativa, renderizada con Skia sobre GPU
Motor de videoFFmpeg, invocado como proceso externo
PreviewLibVLCSharp
MVVMCommunityToolkit.Mvvm
TestsxUnit

Nota de versión: Avalonia está fijado al rango [11.3.13,12.0.0) porque LibVLCSharp.Avalonia todavía no soporta la rama 12.x. El reproductor está aislado tras la interfaz IPreviewPlayer para que esa migración, cuando llegue, no afecte al resto de la aplicación.

Compilar desde el código

Requisitos

  • .NET 10 SDK o superior
  • FFmpeg y ffprobe (se obtienen con el script incluido)

Pasos

git clone https://github.com/maniadiaz/EditFlow.git
cd EditFlow

Descarga FFmpeg y verifica su SHA-256 contra el hash fijado en tools/ffmpeg.lock.json:

REM Windows
tools\fetch-ffmpeg.cmd
# Linux y macOS
pwsh tools/fetch-ffmpeg.ps1

En Windows se usa el envoltorio .cmd porque pwsh es PowerShell 7 y no viene instalado con el sistema: solo está Windows PowerShell 5.1, que se invoca como powershell.exe. El envoltorio además evita la política de ejecución que bloquea los .ps1 por defecto.

Después, lo de siempre:

dotnet restore
dotnet build
dotnet test
dotnet run --project src/EditFlow.App

Publicar

dotnet publish src/EditFlow.App -c Release -r win-x64   --self-contained -p:PublishTrimmed=true
dotnet publish src/EditFlow.App -c Release -r linux-x64 --self-contained -p:PublishTrimmed=true
dotnet publish src/EditFlow.App -c Release -r osx-arm64 --self-contained -p:PublishTrimmed=true

Sobre el recorte: PublishTrimmed desactiva la serialización JSON por reflexión. Si alguna vez vuelve a usarse JsonSerializer sin un contexto generado en compilación, la aplicación publicada morirá al arrancar con un error que no aparece al compilar ni en los tests. La única red es publicar y abrirla.

Instalador de Windows

tools\installer\build.cmd 0.6.0

Publica la aplicación, la empaqueta con FFmpeg y deja un único .exe en artifacts/installer/. Hace falta Inno Setup:

winget install --id JRSoftware.InnoSetup

El instalador se instala para el usuario actual, en %LOCALAPPDATA%\Programs\EditFlow, sin pedir permisos de administrador. Lleva dentro la aplicación (no hace falta tener .NET) y FFmpeg; los modelos de subtítulos y traducción no, que se descargan la primera vez que se usan y viven en %LOCALAPPDATA%\EditFlow\speech. Desinstalar borra las cachés pero deja esa carpeta: son cientos de MB que cuesta un rato volver a bajarse, así que se borra a mano si se quiere.

Instalador~120 MB
Instalado~425 MB (de los cuales 180 son FFmpeg y 198 LibVLC)

Al terminar, el instalador comprueba que FFmpeg arranca de verdad antes de darse por bueno. No basta con que los archivos estén en su sitio: pueden estar completos, con el hash correcto, y aun así no poder ejecutarse. Si no arranca, el instalador lo dice en ese momento en vez de dejar que la aplicación falle después con un código de error.

No está firmado. Windows SmartScreen avisará al abrirlo: Más información → Ejecutar de todas formas. Eso es un aviso y se salta con un clic.

Un equipo con Smart App Control activado es otra cosa: bloquea sin dar opción, y compilar desde el código tampoco lo evita, porque lo que bloquea es FFmpeg. Solo se activa solo en instalaciones limpias de Windows 11, así que la mayoría de equipos no lo tienen. Si EditFlow no abre, empieza por aquí: docs/SMART-APP-CONTROL.md.

Si algo no arranca

tools\check-ffmpeg.cmd

Ejecuta FFmpeg, hace una codificación real y, si falla, distingue entre un bloqueo del Control de aplicaciones y un binario dañado, en vez de dejar un código de error a secas. Sale con 0 si todo va bien, 2 si no encuentra FFmpeg, 3 si lo bloquea Smart App Control y 4 si el binario está roto. El mismo script viaja dentro de la instalación, en %LOCALAPPDATA%\Programs\EditFlow\tools\.

Al publicar un tag v*.*.*, el workflow release.yml construye el instalador y lo cuelga de la release de GitHub con su SHA-256.

Contribuir

El proyecto sigue Git Flow, Conventional Commits y SemVer. Los detalles están en CONTRIBUTING.md.

Tras clonar, activa los hooks del repositorio:

git config core.hooksPath .githooks

Validan el formato de los mensajes de commit y bloquean que datos sensibles entren al historial.

Licencia

GPL-3.0-or-later — ver LICENSE.

EditFlow es software 100 % libre y gratuito. Puedes usarlo, estudiarlo, modificarlo y redistribuirlo. A cambio, cualquier versión derivada que distribuyas debe conservar tu aviso de copyright y publicar también su código fuente bajo la misma licencia.

Es la misma elección que hacen Shotcut y Kdenlive, y por el mismo motivo: permite empaquetar la build completa de FFmpeg —con x264 y x265— sin ninguna ambigüedad legal, y garantiza que el proyecto siga siendo libre para quien venga después.

Nada propietario

El proyecto no depende de ningún componente de pago, servicio externo ni SDK con licencia:

ComponenteLicencia
.NET, Avalonia, NAudio, CommunityToolkit.Mvvm, SkiaSharpMIT
xUnitApache-2.0
FFmpeg (build completa, con x264 y x265)GPL-2.0-or-later
whisper.cpp y los modelos de Whisper (subtítulos automáticos, se descargan bajo demanda)MIT
llama.cpp (traducción de subtítulos, se descarga bajo demanda)MIT
Qwen3.5 4B (modelo de traducción, se descarga bajo demanda)Apache-2.0

Quedan deliberadamente fuera del proyecto los formatos de cámara RAW que exigen el SDK del fabricante (RED, ARRIRAW, Blackmagic RAW) y cualquier integración con servicios de pago. El detalle está en docs/PARIDAD-PREMIERE.md.


GPL-3.0-or-later © 2026 maniadiaz