µLibertad

30/10/2007

Pega los subtítulos de tus series y películas en el vídeo

Filed under: Aplicaciones,Tutoriales — Tony @ 8:11 pm

Estoy muy aficionado a las series, cada semana suelo seguir unas cuantas (Smallville, Heroes, Lost, Kyle XY, House, Scrubs…) y una de las cosas que me gustan es guardarme los capítulos bien ordenados y con sus subtítulos pegados en el mismo vídeo, sin necesidad de tener el típico archivo .srt aparte. Por ello hace un tiempo me puse a buscar una manera de pegar los subtítulos que fuera sencilla y, si podía ser, que no necesitara de un programa demasiado complejo para hacerlo. Por ejemplo está Avidemux, que si bien lo puede hacer, no necesito toda una suitte de edición de vídeo solo para esto. Aquí os explicaré como pegar los subtítulos que tengáis descargados a su vídeo correspondiente, y todo desde el terminal, más sencillo imposible.

Primero empezaremos por los requisitos, lo único que necesitamos es el paquete mencoder (y las dependencias que pueda tener) y una fuente instalada en nuestro sistema que sea de nuestro agrado, en mi caso utilizo FreeSans Bold (incluida en el paquete ttf-freefont), que me gusta mucho como queda y se lee a la perfección en el vídeo. Instalemos pues:

aptitude install mencoder ttf-freefont

Lo próximo será ponernos manos a la obra. Abriremos un terminal y nos situaremos en la carpeta donde tenemos el vídeo y los subtítulos, pues nos será mucho más cómodo a la hora de introducir el comando.

Bien, supongamos que estamos en este caso:

  • Archivo de vídeo: Heroes.S02E01.HDTV.XviD-XOR.avi
  • Archivo de subtítulos: Heroes.S02E01.HDTV.XviD-XOR.srt
  • Archivo de salida deseado: Heroes.S02E01.avi

Situados en la carpeta en cuestión introducimos el siguiente comando:

mencoder -ovc lavc -lavcopts vcodec=mpeg4 -oac copy Heroes.S02E01.HDTV.XviD-XOR.avi -o Heroes.S02E01.avi -sub Heroes.S02E01.HDTV.XviD-XOR.srt -font /usr/share/fonts/truetype/freefont/FreeSansBold.ttf -subfont-autoscale 1

Tras esto mencoder empezará a codificar el vídeo creando el nuevo archivo .avi con los subtítulos ya pegados en él.

Como se puede ver, el comando es un poco engorroso de recordar, y como tiene varias variables no se le podría poner un alias, pero para eso he creado un script (sí, yo solito!!!) que aunque es muy básico nos sirve para no tener que recordar todos los parámetros. Es el siguiente:

#!/bin/bash
read -p "Selecciona el archivo de vídeo: " video_ini
read -p "Selecciona el archivo de subtitulos: " subs
read -p "Selecciona el nombre del archivo de salida: " video_fin
mencoder -ovc lavc -lavcopts vcodec=mpeg4 -oac copy $video_ini -o $video_fin -sub $subs -font /usr/share/fonts/truetype/freefont/FreeSansBold.ttf -subfont-autoscale 1

En el script lo único que deberíais cambiar sería la ruta de la fuente, en caso de que queráis utilizar otra distinta. Como se utiliza el script? Muy sencillo:

Primero lo creamos, con kate, gedit, nano o lo que más rabia os de, le dáis un nombre, por ejemplo yo le he puesto como nombre pegar_subs, después le damos permisos de ejecución y lo copiamos a la carpeta /usr/bin (así no tendremos que indicar la ruta al script ya que estará en nuestro PATH):

nano pegar_subs

chmod +x pegar_subs

cp pegar_subs /usr/bin

Para usarlo, abrimos un terminal y nos vamos a la carpeta donde tenemos el vídeo y los subtítulos y tecleamos:

pegar_subs

Nos preguntará por el nombre del vídeo, el nombre de los subtítulos y el nombre que le queremos dar al archivo de salida. Como en ese diálogo no hay autocompletado, lo mejor es copiar el nombre del archivo directamente y pegarlo en el terminal. Tras esto tendremos nuestro vídeo con los subtítulos integrados.

Con la fuente FreeSans que le tengo puesta podéis ver una muestra de como queda:

Ántes:

Después:

El único problema que me he encontrado es con los símbolos «¡» y «º», si alguien sabe qué parámetro hay que introducir para conseguir que salgan bien (se sustituyen por «¿»), ya sabe donde decirlo 😛

Deberían ponerse correctamente usando la codificación ISO 8859-15, pero por más que miro el manpage no doy con el parámetro correcto.

Y nada más, espero que os sirva este mini manual. Saludos!

19 comentarios »

  1. Grande, esto me servirá para no tener tantos ficheros srt por ahi purulando.
    Sabes cuanto tiempo tarda en insertar los subs aprox.??

    Saludos!

    Comentarios por tanqueatun — 31/10/2007 @ 12:37 pm | Responder

  2. Depende del tamaño del vídeo. No he controlado el tiempo exacto, pero un capítulo de 350 Mb anda sobre los 5-10 minutos así a ojo, pero ya te digo que no lo he controlado mucho. También dependerá de tu PC, y si tienes más procesos por ahí rondando. Yo tengo un AMD X2 4800+ con 2 Gb de Ram. Pero saldrás antes de dudas probándolo.

    Comentarios por Tony — 31/10/2007 @ 3:21 pm | Responder

  3. hola una pregunta cuando usa este método no pierde la calidad del video?? o sea sigue copiando la misma calidad que trae el video como el audio, al agregar los subtitulos, muchas gracias me gustaria aclarar esa duda, y felicidades x tu blog.

    Comentarios por alejandro — 31/10/2007 @ 4:55 pm | Responder

  4. Es un tema en el que me he estado fijando, y si te digo la verdad, pierde calidad, pero no es demasiado (por lo menos a mi no me lo parece). Se nota que tiene algo menos de calidad, pero, repito, para mí, la pérdida no es muy importante. Otra cosa es la opinión personal de cada uno, si buscas que no haya ningún tipo de pérdida pues no te sirve claro, pero eso se soluciona comprobándolo tú mismo. El vídeo original no te lo va a tocar así que no pierdes nada probando.

    Comentarios por Tony — 31/10/2007 @ 8:52 pm | Responder

  5. He estado mirando y he actualizado la entrada poniendo unos comandos con los que hay menos pérdida de calidad. El audio directamente se copia y el vídeo se ve algo mejor. Igual se puede tener aún menos pérdida, pero el manpage del mencoder es kilométrico y ya no se que más probar.

    Comentarios por Tony — 31/10/2007 @ 10:00 pm | Responder

  6. muchas gracias amigo gracias x aclararme 😀

    Comentarios por alejandro — 1/11/2007 @ 6:27 am | Responder

  7. oh wn excelente!!!
    fue hacer las cosas por consola siempre es mas confiable 🙂

    Comentarios por kotelo — 1/11/2007 @ 6:24 pm | Responder

  8. El motivo por el que te sustituye los caracteres no ASCII por «¿» probablemente sea debido al código de caracteres. Con el comando file puedes comprobar en qué código de caracteres están los subtítulos. No sé con cuál se lleva mejor MEncoder, pero si están en ISO-8859-1 puedes probar a convertirlos a UTF-8 con «iconv -f ISO-8859-1 -t UTF-8 fichero_entrada > fichero_salida», y para convertir de UTF-8 a ISO-8859-1 es fácilmente intuible que será «iconv -f UTF-8 -t ISO-8859-1 fichero_entrada > fichero_salida». Si omites la opción «-t » lo convierte al código de caracteres en el que está la consola.

    Por cierto, comparto la opinión de que es un engorro andar con los SRT sueltos, pero para solucionarlo yo prefiero unir el vídeo y el subtitulo en un fichero Matroska, que soporta canales de subtítulos en formato SRT (entre otros), por lo que no es necesario recodificar y no se añaden los subtitulos al vídeo, por lo que se pueden seguir activando o desactivando. Incluso permite especificar el idioma de cada pista de vídeo, audio y subtítulos y así puedes tener varias pistas de audio y subtítulos para que se reproduzca automáticamente la más conveniente según la configuración de idioma de reproducción (opciones alang y slang en MPlayer), especialmente útil con vídeos en dual. Matroska requiere subtítulos en código de caracteres Unicode (UTF-8) y en formato SRT, SSA o VobSub (los de los DVDs).
    http://www.matroska.org/index.html.es

    Comentarios por Chuso — 18/11/2007 @ 8:42 pm | Responder

  9. Pues no me había planteado lo de usar matroska. La verdad es que no conozco apenas este formato de vídeo, pero por lo que me cuentas puede estar muy bien para el tema de los subtítulos. Además he visto en el enlace que hay una herramienta y en los repos de Debian la he encontrado junto con una interfaz gráfica para el mismo, será cuestión de probar.

    Sobre la codificación, yo abro los subtítulos con Kate y les pongo ISO-8859-15 y con esa se ven bien, será cuestión de probar eso que dices.

    Gracias por el aporte.

    Comentarios por Tony — 20/11/2007 @ 6:25 pm | Responder

  10. Buenas! Soy muy inexperto, me gustaría saber qué es el paquete mencoder necesario para realizar este proceso y como se obtiene. muchas gracias.

    Comentarios por Fede — 29/12/2007 @ 2:44 am | Responder

  11. El paquete mencoder es un programa, y en el principio del tutorial ya lo instalas con la orden:
    aptitude install mencoder ttf-freefont

    Comentarios por Oscar — 29/12/2007 @ 4:23 pm | Responder

  12. Pon -utf8 como opcion. Mira este link:
    http://0kelvins.blogspot.com/2007/10/ensamblar-avi-srt.html

    Comentarios por xoselito — 30/12/2007 @ 2:34 pm | Responder

  13. va de lujo! Es justo lo que necesitaba para poder pasar las series a colegas que lo quieren ver en la tele, donde el srt no lo pilla.
    muchas gracias por este tutorial.
    Lo unico es que he tenido que añadir deb http://mirror.home-dn.net/debian-multimedia stable main en los repositorios, ya que en debian no viene por defecto.
    Saludos

    Comentarios por david — 30/04/2008 @ 1:11 pm | Responder

  14. ¿Se puede hacer con más de un fichero srt? ¿Es decir, se puede añadir más de un fichero srt al mismo avi?
    Saludos

    Comentarios por Manolo — 14/06/2008 @ 12:40 pm | Responder

  15. hola!
    ocurre que bajé otro programa (muy tedioso por lo demás) llamado avi_recomprimiser o algo asi, para adherirle los .srt a un archivo .avi que me pidieron guardara en uin ipod, pero ocurre que ahora no puedo ver los videos o películas que bajo con el archivo .srt independiente… simplemente no lo lee.
    Desinstalé el programa (que en realidad era un paquete de programas)sin embargo el problema persiste.
    Cualquier ayuda se agradece de antemano.
    Saludos.

    Comentarios por pablo_101 — 5/07/2008 @ 2:03 am | Responder

  16. Las utilidades yo casi siempre las encuentro en una pagina de subs que creo que se llama http://www.subtitulosenespanol.com

    Comentarios por Martin Subs — 19/09/2008 @ 3:11 am | Responder

  17. Es lo mejor que he encontrado
    Mil gracias!!!

    Comentarios por abel — 24/09/2008 @ 8:43 pm | Responder

  18. He hecho un script en python basado en mencoder. Es más fácil que el tuyo, por que no hay interactividad con el usuario, todo es automático, aunque tambien acepta parametros. Hechale un vistazo:

    Script para pegar subtítulos de forma masiva a tus videos

    Un saludo

    Comentarios por makiolo — 5/10/2008 @ 11:06 pm | Responder

  19. lo que suelo hacer ,es convertir todos los subtitulos antes de agregarlos al avi
    aqui les dejo un script que eh encontrado en el foro de ubuntu y lo uso muy a menudo
    la forma de usarlo es ./nombrescript directorio
    donde directorio es la carpeta donde tienes los subtitulos.

    #!/bin/bash

    # Comprobamos los parámetros de la línea de comandos
    if [[ ! -d $1 ]]
    then
    echo «¡Error en los parámetros! Uso: $0 «;
    exit 1
    fi

    # Crea los archivos temporales
    tempfile=`tempfile 2>/dev/null` || tempfile=/tmp/test$$
    trap «rm -f $tempfile» 0 1 2 5 15

    # Localiza todos los archivos en el directorio
    find $1 -type f > $tempfile;

    # Abre el archivo temporal
    exec 3/dev/null` || tempfile2=/tmp/test$$
    trap «rm -f $tempfile2» 0 1 2 5 15
    iconv –from-code=$encoding –to-code=utf-8 «$filename» > $tempfile2
    mv -f $tempfile2 «$filename»
    echo «$filename: $encoding -> utf8»;
    fi
    fi
    fi;
    done;

    exec 3<&-

    Comentarios por Etrigan — 2/12/2008 @ 11:48 pm | Responder


RSS feed for comments on this post. TrackBack URI

Replica a alejandro Cancelar la respuesta

Blog de WordPress.com.