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