Desktop video editing and processing application powered by .NET and FFmpeg.
C#
0
95 commits
updated Sep 23, 2026
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.
| Versión | Alcance | Estado |
|---|---|---|
v0.1.0 | Importar · unir · cortar · previsualizar · exportar | ✅ Publicada |
v0.2.0 | Proyectos guardados · reproductor propio · audio multipista mezclado · copias de edición | ✅ Publicada |
v0.3.0 | Pantalla de inicio · editor rehecho · audio recortable con forma de onda · miniaturas · roll/slip/slide | ✅ Publicada |
v0.4.0 | Capas 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.0 | Transiciones, velocidad, recorte con tiradores, fuentes, filtros, fundidos, animaciones y audio profesional | ✅ Publicada |
v0.6.0 | Chroma 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.2 | Instalador de Windows en un .exe, con la aplicación y FFmpeg dentro | ✅ Publicada |
v0.7.0 | Edició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.
| Componente | Tecnología |
|---|---|
| Runtime | .NET 10 (LTS) |
| Interfaz | Avalonia 11.3.x — nativa, renderizada con Skia sobre GPU |
| Motor de video | FFmpeg, invocado como proceso externo |
| Preview | LibVLCSharp |
| MVVM | CommunityToolkit.Mvvm |
| Tests | xUnit |
Nota de versión: Avalonia está fijado al rango
[11.3.13,12.0.0)porqueLibVLCSharp.Avaloniatodavía no soporta la rama 12.x. El reproductor está aislado tras la interfazIPreviewPlayerpara que esa migración, cuando llegue, no afecte al resto de la aplicación.
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
.cmdporquepwshes PowerShell 7 y no viene instalado con el sistema: solo está Windows PowerShell 5.1, que se invoca comopowershell.exe. El envoltorio además evita la política de ejecución que bloquea los.ps1por defecto.
Después, lo de siempre:
dotnet restore
dotnet build
dotnet test
dotnet run --project src/EditFlow.App
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:
PublishTrimmeddesactiva la serialización JSON por reflexión. Si alguna vez vuelve a usarseJsonSerializersin 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.
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.
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.
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.
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.
El proyecto no depende de ningún componente de pago, servicio externo ni SDK con licencia:
| Componente | Licencia |
|---|---|
| .NET, Avalonia, NAudio, CommunityToolkit.Mvvm, SkiaSharp | MIT |
| xUnit | Apache-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.
Desktop video editing and processing application powered by .NET and FFmpeg.
C#
0
95 commits
updated Sep 23, 2026
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.
| Versión | Alcance | Estado |
|---|---|---|
v0.1.0 | Importar · unir · cortar · previsualizar · exportar | ✅ Publicada |
v0.2.0 | Proyectos guardados · reproductor propio · audio multipista mezclado · copias de edición | ✅ Publicada |
v0.3.0 | Pantalla de inicio · editor rehecho · audio recortable con forma de onda · miniaturas · roll/slip/slide | ✅ Publicada |
v0.4.0 | Capas 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.0 | Transiciones, velocidad, recorte con tiradores, fuentes, filtros, fundidos, animaciones y audio profesional | ✅ Publicada |
v0.6.0 | Chroma 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.2 | Instalador de Windows en un .exe, con la aplicación y FFmpeg dentro | ✅ Publicada |
v0.7.0 | Edició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.
| Componente | Tecnología |
|---|---|
| Runtime | .NET 10 (LTS) |
| Interfaz | Avalonia 11.3.x — nativa, renderizada con Skia sobre GPU |
| Motor de video | FFmpeg, invocado como proceso externo |
| Preview | LibVLCSharp |
| MVVM | CommunityToolkit.Mvvm |
| Tests | xUnit |
Nota de versión: Avalonia está fijado al rango
[11.3.13,12.0.0)porqueLibVLCSharp.Avaloniatodavía no soporta la rama 12.x. El reproductor está aislado tras la interfazIPreviewPlayerpara que esa migración, cuando llegue, no afecte al resto de la aplicación.
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
.cmdporquepwshes PowerShell 7 y no viene instalado con el sistema: solo está Windows PowerShell 5.1, que se invoca comopowershell.exe. El envoltorio además evita la política de ejecución que bloquea los.ps1por defecto.
Después, lo de siempre:
dotnet restore
dotnet build
dotnet test
dotnet run --project src/EditFlow.App
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:
PublishTrimmeddesactiva la serialización JSON por reflexión. Si alguna vez vuelve a usarseJsonSerializersin 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.
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.
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.
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.
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.
El proyecto no depende de ningún componente de pago, servicio externo ni SDK con licencia:
| Componente | Licencia |
|---|---|
| .NET, Avalonia, NAudio, CommunityToolkit.Mvvm, SkiaSharp | MIT |
| xUnit | Apache-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.