Como unir archivos de video
Algunas personas tienen la mala costumbre de poner en la red videos partidos en partes para que se puedan quemar en CD, es decir, partes de maximo 700MB cada una.
El problema es que no todos queremos quemar las peliculas, es mas, las peliculas son para verlas una sola vez, estar viendo la misma pelicula una y otra vez puede ocasionar graves perdidas mentales, y la oportunidad de ver peliculas nuevas. (No vean la misma pelicula mas de una vez el mismo año).
Entonces, para unir los archivos hacemos este proceso, es facil y permite tener un mayor orden sobre los archivos, si utilizamos el formato Matroska/MKV como el contenedor del video, entonces vamos a tener un solo archivo al final.
Estructura
Supongamos que tenemos los siguientes archivos:
- cd1.avi [00:50:39]
- cd2.avi [01:03:42]
- cd1.srt
- cd2.srt
Al lado de cada archivo de video (.avi) viene la duracion en horas:minutos:segundos. Se puede apreciar que tenemos tambien los subtitulos.
Volviendo a unir el video
Para unir los archivos de video utilizo avimerge de transcode
Eso nos va a generar un archivo llamado video.avi con la pelicula.
Uniendo los subtitulos
Esta parte es un poco complicada, para efectos practicos utilizo mplayer y una calculadora (O las tablas de multiplicar)
La idea de unir subtitulos es que la primera parte (cd1.srt) tiene los tiempos correctos, de 00:00:00 hasta 00:50:39, sin embargo, la segunda parte (cd2.srt) en lugar de comenzar en 00:50:39, lo hace en 00:00:00.
Lo que tenemos que hacer es cambiar las estampas de tiempo de cd2.srt de manera que comience en 00:50:39 y que cada trozo de texto de los subtitulos refleje la diferencia con respecto a ese inicio, al que llamaremos el offset.
Entonces, lo primero, ocupamos obtener la cantidad de segundos que representan 00:50:39, la formula es multiplicar la cantidad de horas por el equivalente en segundos, sumarlo con el equivalente de minutos en segundos, y finalmente sumar los segundos.
- Horas*(60*60*1)
- Minutos*(60*1)
- Segundos*(1)
En el caso de nuestro ejemplo los segundos en los que deberia comenzar cd2.srt corresponden a: 00*(60*60*1)+50*(60*1)+39*(1) = 3039 (Offset).
Ahora que tenemos que el offset es 3039, utilizamos mplayer para generar un nuevo archivo srt con las estampas de tiempo corregidas.
El comando anterior nos generará un archivo llamado dumpsub.srt con las estampas debidamente corregidas.
El siguiente paso es concatenar los archivos de subtitulos en uno solo:
El archivos newsubs.srt contiene los subtitulos con las estampas de tiempo en orden. El ultimo paso consiste en que mplayer reorganice el orden las entradas, esto lo requerimos porque el formato srt marca el orden explicito de cada entrada, mplayer no tienen ningun problema en darle prioridad a las estampas de tiempo, pero talvez otros reproductores le den mas prioridad al orden de las entradas:
Finalmente tenemos en el nuevo dumpsub.srt los subtitulos corregidos.
Generando un archivo Matroska/MKV
En un mundo ideal los subtitulos y el video no tienen porque estar separados, el formato contenedor Matroska/MKV permite tener los dos archivos en uno solo:
Para ver el video con los subtitulos se utiliza: