Skip to content

Automatizador de Muxeo MKV desde ASS

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.

  • olivo28

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).

  1. Especificar archivos .ass individuales:

    Terminal window
    :: Procesar un solo archivo por ruta absoluta
    sai mux C:\Ruta\Completa\a\tu\subtitulo_ep01.ass
    :: Procesar múltiples archivos relativos
    sai mux subs\ep01.ass subs\ep03.ass
  2. Especificar un rango de episodios: Busca archivos en el directorio actual que coincidan con el patrón (ej. *_01.ass a *_05.ass).

    Terminal window
    sai mux 01-05
  3. Especificar un número de episodio único: Busca el archivo correspondiente en el directorio actual (ej. *_04.ass).

    Terminal window
    sai mux 04
  4. Combinación:

    Terminal window
    sai mux 01-03 C:\ruta\a\otro\subtitulo_extra.ass

La 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.

El 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.

Aquí está el desglose de las directivas SAI esperadas:

  1. 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ámetroRequeridoDescripción
    <lang>Código de idioma ISO 639-2 (ej. jpn, eng, und). Se asignará a la pista de video en el MKV.
    {<track_name>}NoNombre descriptivo para la pista de video (ej. {RAW}). Si se omite, no se asigna nombre.
    <ruta_al_video>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.mkv
    Comment: 0,0:00:00.00,0:00:00.00,Default,SAI,0,0,0,,{:video und}../Video/Episodio_01.mp4
  2. Especifica 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ámetroRequeridoDescripción
    <lang>Código de idioma ISO 639-2 (ej. jpn, esl, eng). Se asignará a la pista de audio.
    {<track_name>}NoNombre descriptivo para la pista de audio (ej. {Japonés}).
    <ruta_al_video>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.mkv
    Comment: 0,0:00:00.00,0:00:00.00,Default,SAI,0,0,0,,{:audio eng}Audio/Track_ENG.aac
  3. Establece 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ámetroRequeridoDescripción
    <lang_code>Código de idioma ISO 639-2 (ej. spa, esl, es-419, eng).
    {<track_name>}NoNombre 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-419
    Comment: 0,0:00:00.00,0:00:00.00,Default,SAI,0,0,0,,{:subLang}eng
  4. Especifica 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ámetroRequeridoDescripción
    <nombre_archivo.mkv>El nombre deseado para el archivo MKV resultante.
    {[<prefix>] }NoUn 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).mkv
    Comment: 0,0:00:00.00,0:00:00.00,Default,SAI,0,0,0,,{:outputName}Episodio_Final.mkv
  5. Especifica 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ámetroRequeridoDescripción
    <ruta_a_la_carpeta_fonts>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}Fonts
    Comment: 0,0:00:00.00,0:00:00.00,Default,SAI,0,0,0,,{:fonts}../Shared/Project_Fonts
  6. Define 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ámetroRequeridoDescripción
    <lang>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>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>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 Principal
    Comment: 0,0:22:00.01,0:22:00.01,Default,SAI,0,0,0,,{:chapter en}Ending Theme
  7. 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ámetroRequeridoDescripción
    <timestamp_inicio>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>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.ass
    Comment: 0,0:22:00.01,0:22:00.01,Default,SAI,0,0,0,,{:insert}../Common/Ending_v2.ass
  8. 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ámetroRequeridoDescripción
    {:audio}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.ac3
    Comment: 0,0:00:00.00,0:00:00.00,Default,SAI,0,0,0,,{:extraAudio jpn}{Comentarios Staff}Extras/Commentary.ogg
  9. Incluir 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ámetroRequeridoDescripción
    <lang>Código de idioma ISO 639-2 (ej. jpn, eng, und).
    {<track_name>}NoNombre descriptivo.
    <ruta_al_subtitulo>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.srt
    Comment: 0,0:00:00.00,0:00:00.00,Default,SAI,0,0,0,,{:extraSubs spa}{Forzados}Signs_Forced.ass

Para 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.

  1. Descarga el archivo .lua (cif.SAIMuxer.lua).

  2. Abre Aegisub.

  3. Ve al menú ArchivoAbrir carpeta de _scripts_ de Aegisub.

  4. Se abrirá una carpeta en tu explorador de archivos. Entra en la subcarpeta automation, y dentro de ella, en la carpeta autoload.

  5. Copia o mueve el archivo .lua descargado a esta carpeta automation/autoload.

  6. 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.

  1. Abre Aegisub (con el script ya instalado).
  2. Ve al menú AutomatizaciónSAI MuxerConfiguración.
  3. Aparecerá una ventana:
    • Ruta a sai.exe: Escribe la ruta completa al ejecutable sai.exe (o sai en Linux), o usa el botón SAI... para buscarlo.
    • Ruta a mkvmerge.exe: Escribe la ruta completa al ejecutable mkvmerge.exe (o mkvmerge), o usa el botón MKVMerge... para buscarlo.
  4. Haz clic en 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ónSAI Muxer:

  1. Agregar líneas de pistas

    • Propósito: Abre una interfaz gráfica para generar las líneas de comentario SAI básicas ({:video ...}, {:audio ...}, {:subLang ...}, {:fonts ...}, {:outputName ...}, {:extraAudio ...}, {:extraSubs ...}, {:insert ...}).
    • Cómo funciona: Selecciona las casillas de las pistas que quieres definir, elige idiomas y escribe nombres de pista opcionales. Puedes añadir campos para pistas de audio/subtítulos extra usando los botones 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.
    • Nota: Este comando no te pide las rutas a los archivos; solo genera la estructura de la línea. Necesitarás usar “Agregar rutas…” después, o añadirlas manualmente. Por defecto, para {:fonts} añadirá {:fonts}Fonts.
  2. Agregar líneas de capítulos

    • Propósito: Abre una interfaz para generar las líneas {:chapter ...}.
    • Cómo funciona: Similar al anterior, puedes añadir más campos de capítulo con el botón 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.
    • Nota Importante: Las líneas de capítulo se insertarán con 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.
  3. Agregar rutas en líneas de pistas…

    • Propósito: Ayuda a rellenar las rutas de archivo/carpeta en las líneas SAI que ya existen en tu script.
    • Cómo funciona: Ejecuta esta macro. El script buscará líneas 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.
  4. Multiplexar

    • Propósito: Ejecuta el comando sai mux utilizando el archivo de subtítulos actualmente abierto y guardado en Aegisub.
    • ¡Prerrequisitos Cruciales!
      • La configuración de rutas (paso inicial) debe estar hecha.
      • El archivo .ass actual debe estar guardado.
      • Todas las líneas SAI necesarias (video, audio, subLang, outputName, etc.) deben estar presentes en el archivo .ass.
      • Todas las rutas en esas líneas SAI deben ser correctas y apuntar a archivos/carpetas existentes.
    • Cómo funciona: Lee la configuración, construye el comando sai mux "tu_archivo.ass" y lo ejecuta.
    • Salida y Errores: El progreso y cualquier mensaje de error de 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!
  5. Configuración

    • Abre la ventana de configuración descrita en el paso inicial para cambiar las rutas de sai o mkvmerge.

Flujo de trabajo típico con el script Lua

Section titled “Flujo de trabajo típico con el script Lua”
  1. Configurar: (Solo la primera vez) Usa SAI Muxer → Configuración para indicar las rutas de sai y mkvmerge.

  2. Abrir/Crear Subtítulo: Trabaja en tu archivo .ass en Aegisub.

  3. 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.

  4. Agregar Capítulos (Opcional): Usa SAI Muxer → Agregar líneas de capítulos.

  5. Ajustar Tiempos de Capítulos: Manualmente, selecciona cada línea {:chapter ...} y ajusta su Start Time en Aegisub.

  6. Guardar el Archivo: Guarda tu archivo .ass.

  7. Agregar Rutas: Usa SAI Muxer → Agregar rutas en líneas de pistas... para seleccionar los archivos/carpetas correspondientes a cada línea SAI generada.

  8. Revisar y Guardar: Asegúrate de que todas las líneas SAI y sus rutas son correctas. Guarda el archivo .ass nuevamente.

  9. Multiplexar: Usa SAI Muxer → Multiplexar.

  10. Verificar Log: Revisa la ventana de Registro de Depuración de Aegisub (Control + Shift + L) para ver si el proceso fue exitoso o si hubo errores.