Convertir subtítulos de DVD a formato .srt

Esta receta explica cómo extraer los subtítulos de un DVD y convertirlos en formato SRT.

Nota Legal

El autor subraya que copiar un soporte digital de contenido cultural es legal para obras propias, copias adquiridas comercialmente o que cumplan las condiciones de copia privada. El autor rechaza toda responsabilidad y desaprueba la utilización de esta información en aquellos casos que queden fuera de la legalidad vigente.

Ingredientes.

  • transcode
  • subtitleripper
  • aspell-* (instala los idiomas que necesites)

Elegir el flujo de subtítulos

Para ver qué subtítulos incluye el DVD, mira Listar el contenido de un DVD.

Extraer un flujo

$ tccat -i /dev/dvd -T 1,-1 | tcextract -x ps1 -t vob -a 0×22 > lovestory-es.ps1

dónde:

  • -T 1: Es el track (título) del DVD
  • -a 0×22: Extraer el 3º flujo de subtítulos (0×20 + 2)

Convertir el flujo a imágenes

$ subtitle2pgm -o lovestory-es -c 255,255,0,255 < lovestory-es.ps1

Eso genera un montón de imágenes pgm y un fichero de control lovestory-es.srtx.

Convertir las imágenes a texto

Utilizando técnicas de OCR obtendremos un fichero de texto que contiene todos los subtítulos del flujo.

$ pgm2txt lovestory-es

Es posible que si el OCR tiene poco entrenamiento te pregunte sobre algunas letras que no logra reconocer. Como resultado de este proceso habrás obtenido un fichero txt por cada pgm.

Poner todo junto

Hay que incluir el texto generado para cada plano en el fichero .srtx, que contiene la información de temporización. El resultado será un fichero .srt compatible con la mayoría de reproductores multimedia.

$ srttool -s -w < lovestory-es.srtx > lovestory-es.srt

Y comprobar la ortografía

…que nunca está de más:

$ aspell -d es -c lovestory-es.srt

Los diccionarios disponibles están en /usr/lib/aspell.

Todo en un Makefile

TITLE=lovestory
TRACK=1
LANG=es
LANGid=0×21
FILE=$(TITLE)-$(LANG)
 
$(FILE).srt: $(FILE).srtx
	srttool -s -w < $< > $@
	aspell -d $(LANG) -c $@
 
$(FILE).srtx: $(FILE).ps1
	subtitle2pgm -o $(FILE) -c 255,255,0,255 < $<
	pgm2txt $(FILE)
 
$(FILE).ps1: 
	tccat -i /dev/dvd -T $(TRACK),-1 | tcextract -x ps1 -t vob -a $(LANGid) > $@

Probando

Si el fichero de subtítulos se llama igual que el video (pero con extensión .srt) y ambos ficheros están en el mismo directorio, mplayer carga automáticamente dichos subtitulos. En caso contrario, tendrás que indicar algo como:

$ mplayer fichero.avi -sub spanish.srt

Referencias

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de magmax

dvdrip

Yo suelo usar dvdrip, y creo que hace todo eso con una interfaz gráfica (claro, que no comprueba la ortografía).

Miguel Ángel García
http://magmax.org

Imagen de david.villa

Yo también he probado

Yo también he probado dvd:rip y ogmrip (que está muy verde) pero no me acaban de convencer ¿Qué otros programas libres conocéis para estos menesteres?

Magmax ya sabe que soy amigo de Makefiles y scripts para hacer este tipo de cosas automatizables. Por cierto, ¿alguien usa ANDREW?

No soy portavoz de ningún colectivo, grupo o facción. Mi opinión es personal e intransferible.