Herramienta para sincronizar audio de archivos MKV de forma automática y sencilla.
Esta aplicación permite tomar el audio de un archivo de video (por ejemplo, una versión antigua o de TV) y sincronizarlo perfectamente con una versión de mejor calidad (por ejemplo, un Blu-ray), incluso si tienen diferentes velocidades (FPS).
- Busca la carpeta
dist/win-unpackeden el directorio del proyecto. - Ejecuta el archivo
MKV Audio Sync.exe.- No necesitas instalar nada más si usas el ejecutable.
- Abrir la aplicación: Verás una ventana oscura con un diseño sencillo.
- Seleccionar Fuente (Source):
- Haz clic en "Browse" o usa el menú desplegable.
- Elige el archivo que tiene el audio que quieres usar (ej:
video_gallego.mkv).
- Seleccionar Pista:
- Si el archivo tiene varios audios, aparecerá un menú para elegir cuál quieres.
- Seleccionar Destino (Target):
- Elige el archivo de video de alta calidad donde quieres poner el audio.
- Sincronizar:
- Haz clic en "Start Synchronization".
- Espera a que termine. Verás el progreso en la parte inferior.
- Resultado:
- El nuevo archivo se guardará en la carpeta
outputcon el audio sincronizado.
- El nuevo archivo se guardará en la carpeta
Si quieres modificar el código, compilarlo tú mismo o usar la versión de línea de comandos.
- Node.js v14+
- Python 3.8+ con
numpy(pip install numpy) - MKVToolNix (opcional, pero recomendado para
mkvextract)
-
Clonar y configurar:
git clone <repo-url> cd mkv-audio-sync npm install
-
Ejecutar GUI en modo desarrollo:
npm run start-gui # Si tienes problemas con PowerShell: npm.cmd run start-gui -
Ejecutar CLI (Modo clásico):
node cli.js
-
Compilar ejecutable (.exe):
npm run build # El resultado estará en dist/win-unpacked/
El proyecto usa una arquitectura híbrida:
- Frontend: Electron (HTML/CSS/JS) para la interfaz.
- Backend: Node.js para la orquestación y manejo de archivos.
- Procesamiento:
ffmpeg-static: Para conversión de video/audio y extracción.Python + numpy: Para el cálculo matemático preciso del offset (correlación cruzada).
El proceso de sincronización sigue estos pasos automáticos:
graph TD
A[Inicio] --> B{¿FPS Diferentes?}
B -- Sí --> C[Convertir FPS Video/Audio]
B -- No --> D[Extraer Audio]
C --> D
D --> E[Limpiar y Normalizar Audio]
E --> F[Calcular Offset (Python FFT)]
F --> G[Fusionar (Merge)]
G --> H[Archivo Final]
- Detección de FPS: Analiza si el video fuente (ej. 25fps PAL) y destino (ej. 23.976fps NTSC) tienen diferente velocidad.
- Conversión: Si es necesario, convierte el audio y video para que coincidan en duración.
- Extracción: Saca el audio del contenedor MKV.
- Cálculo de Offset: Usa un script de Python (
adaptive_sync.py) que compara las formas de onda de ambos audios para encontrar el punto exacto de sincronización. - Fusión: Crea un nuevo MKV con el video de alta calidad y el audio sincronizado.
main.js: Proceso principal de Electron.renderer.js: Lógica de la interfaz de usuario.lib/: Módulos de utilidad (ffmpeg, mkv, utils).adaptive_sync.py: Algoritmo Core de sincronización.