mkvmerge
Debes tener mkvmerge (parte de MKVToolNix) instalado y accesible en tu PATH, o colocar mkvmerge.exe (o mkvmerge en Linux/macOS) en el mismo directorio que el ejecutable de SAI.
El contenido de esta sección es una adaptación (parcial o total) del trabajo creado por olivo28. Para más contexto, visita la publicación original aquí.
Esta herramienta automatiza el proceso de crear archivos MKV utilizando mkvmerge. Lee un archivo de subtítulos .ass especialmente formateado que contiene no solo los subtítulos, sino también metadatos sobre los archivos de video, audio, fuentes, capítulos y el nombre de salida deseado.
mkvmerge
Debes tener mkvmerge (parte de MKVToolNix) instalado y accesible en tu PATH, o colocar mkvmerge.exe (o mkvmerge en Linux/macOS) en el mismo directorio que el ejecutable de SAI.
Ejecuta la herramienta desde la línea de comandos proporcionando los archivos o rangos de episodios a procesar. La herramienta buscará los archivos .ass correspondientes en el directorio actual o en las rutas especificadas.
Usa sai.exe (o .\sai.exe si no está en el PATH).
Especificar archivos .ass individuales:
:: Procesar un solo archivo por ruta absolutasai mux C:\Ruta\Completa\a\tu\subtitulo_ep01.ass
:: Procesar múltiples archivos relativossai mux subs\ep01.ass subs\ep03.assEspecificar un rango de episodios:
Busca archivos en el directorio actual que coincidan con el patrón (ej. *_01.ass a *_05.ass).
sai mux 01-05Especificar un número de episodio único:
Busca el archivo correspondiente en el directorio actual (ej. *_04.ass).
sai mux 04Combinación:
sai mux 01-03 C:\ruta\a\otro\subtitulo_extra.assUsa sai (o ./sai si no está en el PATH).
Especificar archivos .ass individuales:
# Procesar un solo archivo por ruta absoluta./sai mux /ruta/completa/a/tu/subtitulo_ep01.ass
# Procesar múltiples archivos relativos./sai mux subs/ep01.ass subs/ep03.assEspecificar un rango de episodios:
Busca archivos en el directorio actual que coincidan con el patrón (ej. *_01.ass a *_05.ass).
./sai mux 01-05Especificar un número de episodio único:
Busca el archivo correspondiente en el directorio actual (ej. *_04.ass).
./sai mux 04Combinación:
./sai mux 01-03 /ruta/a/otro/subtitulo_extra.assLa herramienta procesará cada archivo .ass identificado, generando un archivo MKV correspondiente según las instrucciones SAI encontradas dentro de cada .ass. Los archivos MKV de salida se crearán generalmente en el directorio donde se ejecuta la herramienta, a menos que la directiva {:outputName} especifique una ruta diferente dentro del archivo .ass.
.ass de entradaEl archivo .ass de entrada debe contener líneas de Comment: (Comentario) con el campo Name (Actor) establecido en SAI. El campo Text de estos comentarios especiales se utiliza para dar instrucciones al sai-muxer.
Estas líneas NO se incluirán en el archivo de subtítulos final del MKV (excepto las {:chapter ...} que se usan para generar metadatos de capítulo), pero son esenciales para que la herramienta funcione.
Aquí está el desglose de las directivas SAI esperadas:
Especifica el archivo de video fuente.
Obligatorio
Comment: 0,0:00:00.00,0:00:00.00,Default,SAI,0,0,0,,{:video <lang>}{<track_name>}<ruta_al_video>| Parámetro | Requerido | Descripción |
|---|---|---|
<lang> | Sí | Código de idioma ISO 639-2 (ej. jpn, eng, und). Se asignará a la pista de video en el MKV. |
{<track_name>} | No | Nombre descriptivo para la pista de video (ej. {RAW}). Si se omite, no se asigna nombre. |
<ruta_al_video> | Sí | Ruta al archivo de video. Puede ser absoluta o relativa al directorio donde se encuentra el archivo .ass. |
Comment: 0,0:00:00.00,0:00:00.00,Default,SAI,0,0,0,,{:video jpn}{AMZN}E:\Torrents\Video.mkvComment: 0,0:00:00.00,0:00:00.00,Default,SAI,0,0,0,,{:video und}../Video/Episodio_01.mp4Especifica el archivo de audio principal.
Obligatorio
Se necesita al menos una fuente de audio (puede ser el mismo archivo que el video).
Comment: 0,0:00:00.00,0:00:00.00,Default,SAI,0,0,0,,{:audio <lang>}{<track_name>}<ruta_al_audio>| Parámetro | Requerido | Descripción |
|---|---|---|
<lang> | Sí | Código de idioma ISO 639-2 (ej. jpn, esl, eng). Se asignará a la pista de audio. |
{<track_name>} | No | Nombre descriptivo para la pista de audio (ej. {Japonés}). |
<ruta_al_video> | Sí | Ruta al archivo de audio. Puede ser absoluta o relativa al directorio del .ass. Si es la misma que la del video, el script intentará seleccionar la pista de audio de ese archivo. |
Comment: 0,0:00:00.00,0:00:00.00,Default,SAI,0,0,0,,{:audio jpn}{Japonés}E:\Torrents\Video.mkvComment: 0,0:00:00.00,0:00:00.00,Default,SAI,0,0,0,,{:audio eng}Audio/Track_ENG.aacEstablece el idioma y nombre para la pista de subtítulos.
Obligatorio
Establece el idioma y nombre para la pista de subtítulos que se está procesando (el propio archivo .ass) para identificar correctamente la pista de subtítulos principal.
Comment: 0,0:00:00.00,0:00:00.00,Default,SAI,0,0,0,,{:subLang}{<track_name>}<lang_code>| Parámetro | Requerido | Descripción |
|---|---|---|
<lang_code> | Sí | Código de idioma ISO 639-2 (ej. spa, esl, es-419, eng). |
{<track_name>} | No | Nombre descriptivo para la pista de subtítulos (ej. {Mi Fansub}). |
Comment: 0,0:00:00.00,0:00:00.00,Default,SAI,0,0,0,,{:subLang}{PCNet no Fansub}es-419Comment: 0,0:00:00.00,0:00:00.00,Default,SAI,0,0,0,,{:subLang}engEspecifica el nombre del archivo MKV final.
Obligatorio
Comment: 0,0:00:00.00,0:00:00.00,Default,SAI,0,0,0,,{:outputName}{[<prefix>] }<nombre_archivo.mkv>| Parámetro | Requerido | Descripción |
|---|---|---|
<nombre_archivo.mkv> | Sí | El nombre deseado para el archivo MKV resultante. |
{[<prefix>] } | No | Un prefijo opcional entre corchetes (ej. {[MiGrupo] }). Se añadirá al principio del nombre. |
Comment: 0,0:00:00.00,0:00:00.00,Default,SAI,0,0,0,,{:outputName}[PCNet] Serie - 01 (WEB 1080p).mkvComment: 0,0:00:00.00,0:00:00.00,Default,SAI,0,0,0,,{:outputName}Episodio_Final.mkvEspecifica la carpeta que contiene los archivos de fuentes.
No obligatorio
Especifica la carpeta que contiene los archivos de fuentes (.ttf, .otf, .ttc) necesarios para los subtítulos. La herramienta buscará dentro de esta carpeta las fuentes usadas en el archivo .ass (tanto en estilos como en tags \fn) y las adjuntará al MKV. Muy recomendable si tus subtítulos usan fuentes personalizadas. Si no se especifica, no se adjuntarán fuentes.
Comment: 0,0:00:00.00,0:00:00.00,Default,SAI,0,0,0,,{:fonts}<ruta_a_la_carpeta_fonts>| Parámetro | Requerido | Descripción |
|---|---|---|
<ruta_a_la_carpeta_fonts> | Sí | Ruta a la carpeta que contiene los archivos de fuentes. Puede ser absoluta o relativa al directorio del .ass. |
Comment: 0,0:00:00.00,0:00:00.00,Default,SAI,0,0,0,,{:fonts}FontsComment: 0,0:00:00.00,0:00:00.00,Default,SAI,0,0,0,,{:fonts}../Shared/Project_FontsDefine los puntos de capítulo para el MKV.
No obligatorio
Estos se extraen y se guardan en un archivo XML temporal que mkvmerge utiliza. Si no hay líneas {:chapter ...}, el MKV no tendrá capítulos.
Comment: 0,<timestamp_inicio>,<timestamp_fin>,Default,SAI,0,0,0,,{:chapter <lang>}<nombre_capitulo>| Parámetro | Requerido | Descripción |
|---|---|---|
<lang> | Sí | Código de idioma ISO 639-2 para el nombre del capítulo (ej. es, en). Si se omite, se usa und (indefinido). |
<timestamp_inicio> | Sí | El tiempo exacto (ej. 0:01:20.98) donde comienza el capítulo. El timestamp de fin no se usa para capítulos. |
<nombre_capitulo> | Sí | El texto que aparecerá como nombre del capítulo. |
Comment: 0,0:01:20.98,0:01:20.98,Default,SAI,0,0,0,,{:chapter es}Opening - Tema PrincipalComment: 0,0:22:00.01,0:22:00.01,Default,SAI,0,0,0,,{:chapter en}Ending ThemeLas definiciones de capítulos solo se leen del archivo .ass principal, no de los archivos incluidos mediante {:insert}.
Inclusión de otros archivos .ass.
No obligatorio
Permite incluir el contenido (eventos y estilos) de otro archivo .ass dentro del principal. Útil para KFX, openings/endings separados, etc.
Comment: 0,<timestamp_inicio>,<timestamp_fin>,Default,SAI,0,0,0,,{:insert}<ruta_al_otro_ass>| Parámetro | Requerido | Descripción |
|---|---|---|
<timestamp_inicio> | Sí | El tiempo en el archivo principal donde debe comenzar el contenido del archivo insertado. Los tiempos dentro del archivo insertado se ajustarán automáticamente basándose en la diferencia entre este timestamp y el de la primera línea del archivo insertado. |
<ruta_al_otro_ass> | Sí | Ruta al archivo .ass a incluir. Puede ser absoluta o relativa al directorio del archivo .ass que contiene la línea {:insert}. |
Comment: 0,0:01:20.98,0:01:20.98,Default,SAI,0,0,0,,{:insert}OP_ED/Opening_FX.assComment: 0,0:22:00.01,0:22:00.01,Default,SAI,0,0,0,,{:insert}../Common/Ending_v2.assComment con Actor=SAI dentro de los archivos insertados son ignoradas (no se procesan como comandos ni se incluyen en la salida final), excepto por las líneas {:chapter ...} que sí se copian al .ass temporal, pero no generan capítulos.[V4+ Styles]) y eventos ([Events]) del archivo insertado con los del principal.Incluir pistas de audio adicionales.
No obligatorio
Permite incluir pistas de audio adicionales (doblajes, comentarios, etc.).
Comment: 0,0:00:00.00,0:00:00.00,Default,SAI,0,0,0,,{:extraAudio <lang>}{<track_name>}<ruta_al_audio>| Parámetro | Requerido | Descripción |
|---|---|---|
{:audio} | Sí | Igual que {:audio} |
Comment: 0,0:00:00.00,0:00:00.00,Default,SAI,0,0,0,,{:extraAudio esl}{Doblaje Latino}Audio/Track_ESL.ac3Comment: 0,0:00:00.00,0:00:00.00,Default,SAI,0,0,0,,{:extraAudio jpn}{Comentarios Staff}Extras/Commentary.oggIncluir otras pistas de subtítulos.
No obligatorio
Permite incluir otras pistas de subtítulos (otros idiomas, subtítulos forzados, etc.).
Comment: 0,0:00:00.00,0:00:00.00,Default,SAI,0,0,0,,{:extraSubs <lang>}{<track_name>}<ruta_al_subtitulo>| Parámetro | Requerido | Descripción |
|---|---|---|
<lang> | Sí | Código de idioma ISO 639-2 (ej. jpn, eng, und). |
{<track_name>} | No | Nombre descriptivo. |
<ruta_al_subtitulo> | Sí | Ruta al archivo de subtítulos (puede ser .ass, .srt, etc., lo que mkvmerge soporte). Absoluta o relativa al directorio del .ass principal. |
Comment: 0,0:00:00.00,0:00:00.00,Default,SAI,0,0,0,,{:extraSubs eng}{Official Subs}Subs/English.srtComment: 0,0:00:00.00,0:00:00.00,Default,SAI,0,0,0,,{:extraSubs spa}{Forzados}Signs_Forced.assPara facilitar la creación de las líneas de configuración SAI y ejecutar el multiplexado directamente desde Aegisub, se proporciona un script Lua opcional. Este script añade nuevas opciones al menú Automatización de Aegisub.
Descarga el archivo .lua (cif.SAIMuxer.lua).
Abre Aegisub.
Ve al menú Archivo → Abrir carpeta de _scripts_ de Aegisub.
Se abrirá una carpeta en tu explorador de archivos. Entra en la subcarpeta automation, y dentro de ella, en la carpeta autoload.
Copia o mueve el archivo .lua descargado a esta carpeta automation/autoload.
Reinicia Aegisub, el script debería cargarse automáticamente.
Antes de poder usar las funciones del script, debes indicarle dónde se encuentran los ejecutables de SAI y mkvmerge.
Automatización → SAI Muxer → Configuración.sai.exe: Escribe la ruta completa al ejecutable sai.exe (o sai en Linux), o usa el botón SAI... para buscarlo.mkvmerge.exe: Escribe la ruta completa al ejecutable mkvmerge.exe (o mkvmerge), o usa el botón MKVMerge... para buscarlo.Guardar. La configuración se guardará en un archivo llamado sai_config.conf dentro de tu carpeta de usuario de Aegisub (?user).Una vez instalado y configurado, el script añade las siguientes opciones al menú Automatización → SAI Muxer:
Agregar líneas de pistas
SAI básicas ({:video ...}, {:audio ...}, {:subLang ...}, {:fonts ...}, {:outputName ...}, {:extraAudio ...}, {:extraSubs ...}, {:insert ...}).Pista audio +1 / Pista subs +1. Al hacer clic en Agregar, el script insertará las líneas Comment: correspondientes (con Actor=SAI) al principio de tu archivo de subtítulos.{:fonts} añadirá {:fonts}Fonts.Agregar líneas de capítulos
{:chapter ...}.Capítulo +1. Selecciona el idioma y escribe el nombre de cada capítulo. Al hacer clic en Agregar, insertará las líneas Comment: al principio del archivo.Start Time y End Time en 0:00:00.00. Deberás seleccionar manualmente cada línea de capítulo generada y ajustar su Start Time en Aegisub al tiempo correcto donde debe comenzar ese capítulo.Agregar rutas en líneas de pistas…
SAI que ya existen en tu script.Comment: con Actor=SAI que contengan etiquetas como {:video ...}, {:audio ...}, {:fonts ...}, {:insert ...}, etc. Para cada línea encontrada, abrirá un diálogo de selección de archivo (o carpeta para {:fonts}) apropiado para esa etiqueta. Selecciona el archivo/carpeta correspondiente. El script modificará la línea existente, añadiendo la ruta seleccionada al final.Multiplexar
sai mux utilizando el archivo de subtítulos actualmente abierto y guardado en Aegisub..ass actual debe estar guardado.SAI necesarias (video, audio, subLang, outputName, etc.) deben estar presentes en el archivo .ass.SAI deben ser correctas y apuntar a archivos/carpetas existentes.sai mux "tu_archivo.ass" y lo ejecuta.mkvmerge o sai se mostrarán en la ventana de Registro de Depuración de Aegisub (puedes abrirla con Ctrl+Shift+L o desde el menú Ver). ¡Revisa esta ventana si algo falla!Configuración
sai o mkvmerge.Configurar: (Solo la primera vez) Usa SAI Muxer → Configuración para indicar las rutas de sai y mkvmerge.
Abrir/Crear Subtítulo: Trabaja en tu archivo .ass en Aegisub.
Agregar Líneas Base: Usa SAI Muxer → Agregar líneas de pistas para generar la estructura inicial de configuración SAI al principio del archivo.
Agregar Capítulos (Opcional): Usa SAI Muxer → Agregar líneas de capítulos.
Ajustar Tiempos de Capítulos: Manualmente, selecciona cada línea {:chapter ...} y ajusta su Start Time en Aegisub.
Guardar el Archivo: Guarda tu archivo .ass.
Agregar Rutas: Usa SAI Muxer → Agregar rutas en líneas de pistas... para seleccionar los archivos/carpetas correspondientes a cada línea SAI generada.
Revisar y Guardar: Asegúrate de que todas las líneas SAI y sus rutas son correctas. Guarda el archivo .ass nuevamente.
Multiplexar: Usa SAI Muxer → Multiplexar.
Verificar Log: Revisa la ventana de Registro de Depuración de Aegisub (