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 0x22 > 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=0x21
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



blog comments powered by Disqus