Script para poner los subtitulos a videos avi con mplayer, mencoder y zenity

Este script fue obtenido de http://smplayer.berlios.de/forums/viewtopic.php?pid=6101 y modificado por http://travesuras.wordpress.com para que pregunte como van a quedar los subtítulos con ayuda de zenity.

Ignora el estilo de letra del subtitulo. Por ejemplo, si el subtitulo dice que un texto esta en itálica, no hace caso lo pone con el estilo que le digas aquí con el script.

Sirve para pegar los subtítulos a los vídeos tipo avi; cuando lo intente con un flv funciono, es cosa de ir probando.

Permite configurar:

  • Tipo de letra
  • Tamaño
  • Carácter encoding
  • Color de la letra
  • Color del borde de la letra
  • Espaciado
  • Shadow
  • Negritas
  • Itálica
  • El grosor del contorno de la linea fuera de la letra

 

Script:

#!/bin/bash

# El script original obtenido de: http://smplayer.berlios.de/forums/viewtopic.php?pid=6101

# Solo trabaja cuando se usa subtitulos .srt.

# Modificado por http://travesuras.wordpress.com

# Ponerlo en el path de los script de nautilus, darle permisos de ejecución. Necesita de mencoder, mplayer y zenity para trabajar.

# Uso: Con el puntero sobre el avi abrir el el menú contextual, elegir este script y seguir los pasos.

# Los colores RRGGBBAA son igual que los rgb solo que los últimos dos caracteres indica el grado de transparencia. 00 es color total y ff su ausencia.

# Asigna la primera entrada a $FILE
FILE="$1"

# Pregunta cuales subtítulos van a ser utilizados. Para que funcione el script se necesita usar del tipo .srt. De otros no quiso trabajar.
SUBS=`zenity --file-selection --width="502" --height="310" --title "¿Cuales subtítulos? Tiene que ser .srt"`

# Es para dar el nombre con el que va a quedar el vídeo avi ya subtitulado. Tiene que ser uno distinto al original.
FILE_OUT=`zenity --file-selection --width="502" --height="310" --title "Asigna un nombre de salida"`

# Es el tamaño de la letra.
TAMANIO=`zenity --list --width="324" --height="200" --title="Elija tamaño de la letra" --column="Tamaños" "12" "13" "14" "15" "16" "17" "18" "19" "20" "21" "22" "23" "24" "25" "26" "27" "28" "29" "30" "31" "32" "33" "34" "35" "36" "37" "38" "39" "40" "41" "42" "43" "44"`

# Tipo de letra. Según como este configurado MEncoder acepta o no la ruta de las letras, en mi configuración solo quiere el nombre. Siempre funciona con excepción de la vez que estaba usando una tipografía que en el gedit estaba con un nombre distinto al que la tenía guardada, hasta que cambie el nombre del fichero de la letra por el mismo con el que aparecía en el gedit.
LETRA=`zenity --entry --width="324" --height="200" --title="Tipo de letra para el subtítulo," --text="$(echo -e "Escriba el nombre cualquiera \n de las tipografías que tenga instaladas \n algunas configuraciones de MEncoder \n solo aceptan el nombre de \n la tipografía y no la ruta.")" --entry-text "Arial"`

# Es el character encoding con el que esta guardado los subtítulos. Generalmente es ISO-8859-1
CODIGO_CARACTERES=`zenity --entry --width="324" --height="200" --title="Character Encoding" --text="$(echo -e "Escriba el código de caracteres \n en que esta guardado el subtitulo. \n Ejemplos: ISO-8859-1, UTF-8, etc.")" --entry-text "ISO-8859-1"`

# Asigna el color de la letra
COLOR_LETRA=`zenity --entry --width="502" --height="310" --title="Color de la letra" --text="$(echo -e "Cambie los colores por cualquiera rgb y las ultimas \n dos cifras es la intensidad del color. \n 00 para color total y ff para completamente transparente. \n Ejemplo: El color crimson tiene el notación html dc143c y \n si quiero que RRGGBBAA sea el color completo le pongo dc143c00 \n y si fuera completamente transparente dc143cff")" --entry-text="ffd70000"`

# Es el color del borde de la letra.
COLOR_BORDE_LETRA=`zenity --entry --width="502" --height="310" --title="Color del borde la letra" --text="$(echo -e "Color del borde de la letra \n Negro en notación html es 000000, \n y en RRGGBBAA para que sea color total se escribe 00000000 \n completa transparencia 000000ff")" --entry-text="00000000"`

# Es el el espacio entre las líneas
ESPACIADO=`zenity --entry --width="324" --height="200" --title="Espaciado de entrelinea" --text="Espaciado entre las lineas" --entry-text="3"`

# Shadow
SOMBRA=`zenity --list --width="324" --height="200" --title="Shadow de la letra" --column="$(echo -e "Elija 0 para que no tenga shadow \n y 1 para que si la tenga.")" "0" "1"`

# Bold
NEGRITAS=`zenity --list --width="324" --height="200" --title="Negritas de la letra" --column="$(echo -e "Elija 0 para que no tenga bold \n y 1 para que si la tenga las negritas.")" "0" "1"`

# Itálica
ITALICA=`zenity --list --width="324" --height="200" --title="Letra itálica" --column="$(echo -e "Elija 0 para que no la tenga \n y 1 para que sea itálica")" "0" "1"`

# Es que tan gruesa es la línea que rodea las letras
FUERADELINEA=`zenity --list --width="502" --height="310" --title="Grosor del contorno de línea" --column="$(echo -e "Es el grosor del contorno de línea de las letras. \n 0 para que no la tenga y 8 la pone muy gruesa.")" "0" "1" "2" "3" "4" "5" "6" "7" "8"`

MPLAYER=/usr/bin/mplayer
MENCODER=/usr/bin/mencoder

# Extract audio
$MPLAYER "$FILE" -dumpaudio -dumpfile audio_out

# Extract video
mkfifo stream.yuv | $MPLAYER -ass -ass-line-spacing $ESPACIADO -ass-color $COLOR_LETRA -ass-border-color $COLOR_BORDE_LETRA -fontconfig -subcp "$CODIGO_CARACTERES" -ass-force-style FontName="$LETRA",Default.Bold=$(printf "$NEGRITAS"),Italic=$(printf "$ITALICA"),Outline=$(printf "$FUERADELINEA"),Shadow=$(printf "$SOMBRA"),Fontsize=$(printf "$TAMANIO") "$FILE" \
                             -sub "$SUBS" -vo yuv4mpeg -nosound -noframedrop \
                             -quiet -benchmark &

$MENCODER -cache 8192 -noodml -audiofile audio_out -mc 0 -noquiet -o "$FILE_OUT" \
  -oac copy -ovc xvid \
  -xvidencopts bitrate=1166:quant_type=h263:max_bframes=2 \
  -vf-add harddup \
  stream.yuv

# Espera 5 segundos
Sleep 5s

# Clean
rm audio_out
rm stream.yuv

exit

 

 

 

Anuncios

2 thoughts on “Script para poner los subtitulos a videos avi con mplayer, mencoder y zenity

    1. Hola. Que curioso, quise contestarte sin loguearme, de hecho fueron dos intentos. En el primero creí que no los acepto y en el segundo me dijo que el comentario era duplicado. Bueno, para no hacerte el cuento muy largo, ingrese a mi cuenta de wordpress ¡y no encuentro mi comentario! A saber cuantos han hechos que se pierden como los que acabo de mandar.

      Me da gusto que te sirviera, el mio lo tengo toqueteado para que no pregunte tanto. Si no sabes como hacerle, te puedo ayudar. Nada más dime que cosas queden por default en el script.

      Saludos

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s