Hola a todos y bienvenidos a mi post, es el segundo que publico en la categoría GNU/Linux y espero les sea de utilidad. Tratare de explicarlo lo mejor posible y puede que haya algún que otro error de novato (en el uso de Linux) así que espero sepan entender.

Los ordered chapters son una opción disponible para el contenedor Matroska (.mkv) con la cual podremos crear un sistema de capítulos dentro de MKV. Lo particular de esta opción es que todos los capítulos no tienen necesariamente que estar dentro del mismo video, por lo tanto el reproductor puede saltar de un video a otro porque están ligados virtualmente con el video que tiene los capítulos incorporados.
Puntos a tener en cuenta:
- Todos los videos deben tener la misma cantidad y orden de pistas.
- Aquellos videos que estén enlazados virtualmente y no contengan el archivo de capítulos no podrán ser re-multiplexados
- Todos los videos deben estar en la misma carpeta
- Esta opción por el momento solo funciona en la PC
El Manual se dividirá en 2 secciones bien diferenciadas, la primera sera la creación de los OC y la segunda será su correcta reproducción.
Creación de los Ordered Chapters
Previamente tenemos que tener encodeados nuestros videos, en este caso tomare un simple ejemplo de una serie anime. Tendremos 3 videos, el episodio, el opening y el ending, pero serán 5 capítulos... en el video del episodio se desprenderán 3 capitulo que serán el prologo, episodio y avances prox episodio, los otros 2 capítulos corresponderán al opening y ending respectivamente.

Debemos instalar el MKVToolnix, en mi caso uso la distribución Debian 64 bits por lo que Bunkus
no ofrece binarios .deb para la descarga... tenemos la opción de compilar el código fuente a mano o agregar un repositorio al sources.list. En el caso de usar otras distribuciones la instalación corre por cuenta de ustedes.
Primero que nada importamos la llave GPG para el repositorio del MKVToolnix con el siguiente comando:
wget -O - http://www.bunkus.org/gpg-pub-moritzbunkus.txt | sudo apt-key add -
Esto lo hacemos editando con permisos administrativos el archivo sources.list que se encuentra en /etc/apt, deben copiar lo siguiente:
##MKVToolnix
deb http://www.bunkus.org/debian/squeeze/ ./
deb-src http://www.bunkus.org/debian/squeeze/ ./
Luego en la terminal actualicen la lista de repositorios con sudo aptitude update. Una vez terminada de actualizar la lista, instalen los paquetes mkvtoolnix y mkvtoolnix-gui usando el comando sudo aptitude install mkvtoolnix mkvtoolnix-gui.
Una vez instalado ejecutamos el MKVMerge GUI escribiendo mmg en la terminal.
Cargamos el video del episodio y vamos al menú "Editor de capítulos" haciendo click en "nuevo"
Ahora vamos a la pestaña "Editor de capítulos", seleccionando (nuevo archivo de capítulos) hacemos click en el botón añadir capitulo. Se nos genera el "Conjunto de capitulos N°1", nos aseguramos de dejarla seleccionada y hacemos click en el boton añadir capitulo tantas veces como capitulos necesitemos... en nuestro ejemplo seran 5.
Dejamos seleccionado el primer capitulo (sin nombre) [und], en la casilla inicio ingresamos el tiempo en que inicia el primer capitulo en formato HH:MM:SS.ML... como sera el prologo o sea el comienzo pondremos 00:00:00.000. En la casilla fin pondremos el tiempo en que finaliza nuestro capitulo, en mi caso 00:00:45.100, luego deberemos ingresar el nombre de este capitulo para que podamos identificarlo en este caso sera Prologo... opcionalmente podremos seleccionar el idioma y pais pero son solo datos informativos por lo que no influyen en la creacion de los OC, por comodidad no los especifico.
Luego habra que hacer lo mismo con los demas capitulos sin editar hasta que quede mas o menos algo como esto.

Como podrán notar en los tiempos de los 5 capítulos, justo donde termina el prologo comienza el episodio y donde este termina comienzan los avances prox. ep. Pero ¿y el opening y el ending? WTF!!!!
Si lo piensan detenidamente tiene lógica, el opening y el ending están en videos aparte por lo que se debe ingresa su duración... comienzan por el principio (CUAK ) 00:00:00.000 y finalizan donde terminan (CUAK x2) o sea la duración total de ambos.
En cambio en el caso del prologo, episodio y avance prox. ep, estos 3 capítulos se encuentran en el mismo archivo de video por lo que se debe indicar donde comienza y termina cada capitulo con la mayor exactitud posible... a fin de cuentas si se ponen a mirar detenidamente el inicio del prologo y el fin de avance prox. ep marcan la duración total del video, el resto son separaciones "virtuales" pero necesarias.
Bueno una vez terminado el trabajo deben ir al menú Editor de capítulos y guardar como .XML.
Ahora deberemos editar manualmente unas lineas de nuestro flamante archivo XML para que podamos disfrutar de los Ordered chapters.
Lo primero es buscar en la seccion Edition de nuestro archivo, veremos algo como esto:
Archivo XML original dijo:
<!-- <!DOCTYPE Tags SYSTEM "matroskatags.dtd"> -->
−
<Chapters>
−
<EditionEntry>
<EditionFlagHidden>0</EditionFlagHidden>
<EditionFlagDefault>0</EditionFlagDefault>
<EditionUID>2888392302</EditionUID>[/quote]
Nosotros debemos agregar una nueva linea para activar la característica OC en nuestros capítulos, la linea a copiar sera la siguiente:
<EditionFlagOrdered>1</EditionFlagOrdered>
El resultado nos debe quedar de la siguiente manera:
XML Modificado por nosotros dijo:
<!-- <!DOCTYPE Tags SYSTEM "matroskatags.dtd"> -->
−
<Chapters>
−
<EditionEntry>
<EditionFlagHidden>0</EditionFlagHidden>
<EditionFlagDefault>0</EditionFlagDefault>
<EditionFlagOrdered>1</EditionFlagOrdered>
<EditionUID>2888392302</EditionUID>[/quote]
Con la sección <Edition> de nuestro archivo XML ya hemos terminado, 0 es desactivado y 1 es activado. Ahora toca editar cada uno de los <ChapterAtom>, estas secciones son los distintos capítulos que creamos... cada sección se abre con la etiqueta <ChapterAtom> y se cierra con la etiqueta </ChapterAtom> y todo lo que se encuentre dentro de esas 2 etiquetas es información referente al capitulo en cuestión.
En mi caso como cree 5 capítulos tendré 5 secciones <ChapterAtom> entonces lo que debemos agregar en ALGUNAS de estas secciones es la SUID (Identificación única del segmento).
La SUID es un dato presente en la cabecera de cada MKV, es un código hexadecimal que identifica a un video/contenedor MKV con un valor único. Solo debemos agregar una linea con la SUID en aquellos <ChapterAtom> que correspondan a un capitulo que se encuentre en un archivo de video externo (el Opening y el Ending) y no a los capítulos que hagan referencia al video que contendrá nuestro futuro archivo XML que sera el episodio, por lo tanto (y en mi caso) solo deberemos modificar el segundo y el cuarto <ChapterAtom> que corresponden al Opening y Ending respectivamente.
Para averiguar la SUID de un video tenemos 2 posibilidades, usar la herramienta mkvinfo (perteneciente al paquete MKVToolnix) o usando el mismo MKVMerge-gui.
Usando MKVInfo:
Escribimos en la terminal mkvinfo-gui -g y se nos abrirá una ventana en blanco, vamos al menú Archivo y cargamos el video. De toda la información que nos da solo nos interesa la que dice Segmento UID, deben copiar todo ese valor que nos da excepto los "0x"
En mi ejemplo, la SUID correcta del Opening sin los 0x sería: 0e3a3ccfdbd6eb4d19ff68c4b28fdef7
Usando MKVMerge gui:
Abrimos el MKVMerge gui, vamos al menú Archivo y clickeamos la opción Editor de encabezado. Se nos abrirá una ventana e iremos al menú Archivo y clickeamos la opción Abrir para cargar un video MKV.
Expandimos el menú Información del segmento y seleccionamos ID única del segmento, a la derecha aparecerá la información deseada... por suerte este método nos da la SUID sin los 0x así que pueden usarla copiando y pegando.

Ahora incluiremos la SUID a los <ChapterAtom> correspondientes:
Sección ChapterAtom antes de modificar dijo:
<ChapterAtom>
<ChapterDisplay>
<ChapterString>Opening</ChapterString>
<ChapterLanguage>und</ChapterLanguage>
</ChapterDisplay>
<ChapterUID>4057567820</ChapterUID>
<ChapterTimeStart>00:00:00.000000000</ChapterTimeStart> <ChapterTimeEnd>00:01:41.909000000</ChapterTimeEnd>
<ChapterFlagHidden>0</ChapterFlagHidden>
<ChapterFlagEnabled>1</ChapterFlagEnabled>
</ChapterAtom>[/quote]
Para agregar la SUID a esta sección debemos abrir la etiqueta <ChapterSegmentUID format="hex">, copiar la SUID y luego cerrar con la etiqueta </ChapterSegmentUID>, ahora veremos como quedaría.
Seccion ChapterAtom luego de que incluyera la SUID dijo:
<ChapterAtom>
<ChapterDisplay>
<ChapterString>Opening</ChapterString>
<ChapterLanguage>und</ChapterLanguage>
</ChapterDisplay>
<ChapterUID>4057567820</ChapterUID>
<ChapterTimeStart>00:00:00.000000000</ChapterTimeStart> <ChapterTimeEnd>00:01:41.909000000</ChapterTimeEnd>
<ChapterFlagHidden>0</ChapterFlagHidden>
<ChapterFlagEnabled>1</ChapterFlagEnabled>
<ChapterSegmentUID format="hex">0e3a3ccfdbd6eb4d19ff68c4b28fdef7</ChapterSegmentUID>
</ChapterAtom>[/quote]
Listo con este <ChapterAtom> ahora pasaremos al siguiente:
El otro ChapterAtom correspondiente al Ending editado dijo:
<ChapterAtom>
<ChapterDisplay>
<ChapterString>Ending</ChapterString>
<ChapterLanguage>und</ChapterLanguage>
</ChapterDisplay>
<ChapterUID>1894272868</ChapterUID>
<ChapterTimeStart>00:00:00.000000000</ChapterTimeStart> <ChapterTimeEnd>00:01:32.450000000</ChapterTimeEnd>
<ChapterFlagHidden>0</ChapterFlagHidden>
<ChapterFlagEnabled>1</ChapterFlagEnabled>
<ChapterSegmentUID format="hex">1f8b100155673e1f3b8c259dbe3a605f</ChapterSegmentUID> </ChapterAtom>[/quote]
En mi caso ya termine de incluir todas las SUID necesarias por lo que guardo el documento y abro el MKVMerge gui.
Cargamos solo el video del episodio, vamos a la pestaña Opciones generales y en la sección Capítulos hacemos click en el botón Explorar y cargamos nuestro archivo de capítulos XML.

Finalmente hacemos click en el botón Iniciar multiplexado para tener listo nuestro ordered chapters, esto es solo para un episodio de una serie (en mi caso el 17) si son por ejemplo 24 episodios haremos esto en los 24 episodios aunque las SUID del Opening y Ending siempre serán las mismas por lo que se ahorran el paso de averiguarlas.

Reproduccion sin inconvenientes de los Ordered Chapters
En el tema de la reproducción, el VLC que es un excelente reproductor no puede con los OC, el Mplayer de por si solo no puede y creo que se puede compilar a mano para agregar compatibilidad con los OC pero es demasiado trabajo teniendo la posibilidad de usar Mplayer2.
El Mplayer2 es un Fork de Mplayer con interesantisimas características, permite la reproducción de OC por defecto sin tener que andar configurando nada. Se puede compilar el Mplayer2 pero en su misma pagina oficial nos podemos descargar los binarios y estos reproducen perfectamente los OC.
Lo descargan de la siguiente pagina:
http://www.mplayer2.org/
Una vez descargado el paquete, descomprimimos y obtenemos el archivo mplayer
Copiamos el archivo donde queramos, en lo posible en una ubicación fácil. Eso va a gusto de cada uno aunque muchos dirán que seria correcto copiarlo a /opt, yo lo deje en Descargas... despues lo moveré a una ubicación final, de todas formas funciona perfectamente
Desde la terminal ubíquense en la carpeta donde hayan copiado el archivo mplayer y ejecuten el siguiente comando:
./mplayer -fs /ubicación/de/"Nuestro video OC.mkv"
Con ./ ejecutamos un script o programa por consola, mplayer es el nombre del ejecutable, -fs es para que el video se vea en pantalla completa y el resto es la ruta del video.
Solo queda disfrutar de los OC, si quieren pueden instalar una GUI como UMPlayer y en sus opciones reemplazar la ruta del Mplayer original por la del Mplayer2, de esta forma tendrían un reproductor excelente sin necesidad de ingresar comandos y con Ordered chapters totalmente funcionales.

Espero que les sea de utilidad, este manual lo había escrito originalmente para el foro Mundodivx pero revise acá en T! si había algo sobre Ordered Chapter y no encontré nada así que bueno lo publico acá también para toda la comunidad linuxera


