Incrustar subtítulos en videos con Mencoder

Solapas principales

# Nombre: subtitles.sh
# Autor: viriato
# Origen: comunidad exdebian.org
# Lenguaje: BASH
# Licencia: GPL
# Propósito: Incrustar subtítulos en videos con Mencoder
# Dependencias: 
# Código:

#!bin/bash
# Nombre: subtitles.sh
# Autor: viriato
# Origen: comunidad exdebian.org
# Lenguaje: BASH
# Licencia: GPL
# Propósito: Incrustación de subtítulos en videos con Mencoder
# Dependencias: 
# Código:

clear
# Función con el Menú con las opciones del script
function menu {
	echo
	echo 'SCRIPT PARA INSCRUSTAR SUBTÍTULOS CON MENCODER'
	echo
	echo '____________________________________MENÚ__________________________________'
	echo
	echo 'Lista de opciones:'
	echo
	echo '1) Incrustar subtítulos en video para usuarios básicos'
	echo '2) Incrustar subtítulos en video de modo automático para usuarios avanzados'
	echo '3) Incrustar subtítulos en video de modo manual para usuarios avanzados'
	echo '4) Salir del script'
	echo '___________________________________________________________________________'
}
# Función que pide que introduzcas una opción del menú
function write_option {
	echo
	echo 'Introduce una opción:'
	read write_option
}

# Función con la opcion 1) Inscrustar subtítulos en video para usuarios básicos
function option_01 {
	clear
	echo 'Introduce el nombre del video sin subtítulos:'
	read video_input
	echo
	echo 'Introduce el nombre del video subtitulado:'
	read video_output
	echo
	echo 'Introduce el nombre del archivo con subtítulos:'
	read subtitles_file
	echo
	mencoder -ovc lavc -oac mp3lame $video_input -o $video_output -sub $subtitles_file -subfont-text-scale 3
}

# Función con la opción 2) Incrustar subtítulos en video de modo automático para usuarios avanzados
function option_02 {
	clear
	echo 'Ejemplo: mencoder video_input -oac pcm -ovc lavc -sub subtitles_file -font /usr/share/fonts/truetype/freefont/FreeSansBold.ttf -subfont-autoscale 3 -ass -ass-color ffff8000 -ass-border-color 00000000 -ass-force-style Bold=1,Outline=1,Shadow=1,Fontsize=20 -fontconfig -subcp ISO-8859-1 -ass-line-spacing 0 -o video_output'
	echo
	echo 'Si desea cambiar los valores de esta opción, deberá modificarlos en el archivo del script.'
	echo
        echo 'Introduce el nombre del video sin subtítulos:'
	read video_input
	clear
	echo
	echo 'Introduce el nombre del archivo con subtítulos:'
	read subtitles_file
	clear
	echo
	echo 'Introduce el nombre del video subtitulado:' 
	read video_output
	echo
        mencoder $video_input -oac pcm -ovc lavc -sub $subtitles_file -font /usr/share/fonts/truetype/freefont/FreeSansBold.ttf -subfont-autoscale 3 -ass -ass-color ffff8000 -ass-border-color 00000000 -ass-force-style Bold=1,Outline=1,Shadow=1,Fontsize=20 -fontconfig -subcp ISO-8859-1 -ass-line-spacing 0 -o $video_output
#ffff00
}
# Funcion con la opcion 3) Incrustar subtítulos en video de modo manual para usuarios avanzados
function option_03 {
	clear
	echo
	echo 'mencoder video_input -oac pcm -ovc lavc -sub subtitles_file -font /usr/share/fonts/truetype/freefont/FreeSansBold.ttf -subfont-autoscale 3 -ass -ass-color ffff8000 -ass-border-color 00000000 -ass-force-style Bold=1,Outline=1,Shadow=1,Fontsize=20 -fontconfig -subcp ISO-8859-1 -ass-line-spacing 0 -o video_output'
	echo
	echo 'Introduce el nombre del video sin subtítulos:'
	read video_input
	clear
	echo
	echo 'Introduce el nombre del archivo con subtítulos:'
	read subtitles_file
	clear
	echo
	echo 'Ejemplo: /usr/share/fonts/truetype/freefont/FreeSansBold.ttf'
	echo
	echo 'Introduce la ruta y el nombre de la fuente:'
	read path_name_font
	clear
	echo
	echo 'Valor recomendado de la subfuente autoescalada: 3'
	echo
	echo 'Introduce el valor de la subfuente autoescalada:'
	read subfont_autoscale_value 
	clear
	echo
	echo 'Valor recomendado del color de la fuente: ffff8000'
	echo
	echo 'Introduce el valor del color de la fuente:'
	read ass_color_value
	clear
	echo
	echo 'Valor recomendado del color del borde de la fuente: 00000000'
	echo
	echo 'Introduce el color del borde de la fuente:'
	read ass_border_color_value
	clear
	echo
	echo 'Valor recomendado de la negrita de la fuente: 1'
	echo
	echo 'Introduce el valor de la negrita de la fuente:'
	read bold_value
	clear
	echo
	echo 'Valor recomendado del contorno de la fuente: 1'
	echo
	echo 'Introduce el valor del contorno de la fuente:'
	read outline_value
	echo
	clear
	echo
	echo 'Valor recomendado de la sombra de la fuente:1'
	echo
	echo 'Introduce el valor de la sombra de la fuente:'
	read shadow_value
	clear
	echo
	echo 'Valor recomendado del tamaño de la fuente: 20'
	echo 
	echo 'Introduce el valor del tamaño de la fuente:'
	read fontsize_value
	clear
	echo 
	echo 'Codificación recomendada: ISO-8859-1'
	echo
	echo 'Introduce la codificación de la fuente:'
	read character_encoding 
	clear
	echo
	echo 'Valor recomendado del espaciado entre líneas: 0'
	echo
	echo 'Introduce el valor del espaciado entre líneas:'
	read ass_line_spacing_value
	echo
	clear
	echo 'Introduce el nombre del video subtitulado:'
	read video_output
	echo
mencoder $video_input -oac pcm -ovc lavc -sub $subtitles_file -font $path_name_font -subfont-autoscale $subfont_autoscale_value -ass -ass-color $ass_color_value -ass-border-color $ass_border_color_value -ass-force-style Bold=$bold_value,Outline=$outline_value,Shadow=$shadow_value,Fontsize=$fontsize_value -fontconfig -subcp $character_encoding -ass-line-spacing $ass_line_spacing_value -o $video_output
}
# Funcion con la opcion 4) Salir del script
function option_04 {
	echo 'Salir del script'
}

write_option=0
go_out=4

while [ $write_option -ne $go_out ];
	do
	clear	
	menu
	write_option
		if [ $write_option -ge 1 ] && [ $write_option -le 4 ];
			then
			clear
			case $write_option in
			1) option_01
			;;
			2) option_02
			;;
			3) option_03
			;;
			4) option_04
			;;
			esac
		else
			echo '¡No ha introducido una opción correcta!'
 	       fi
   	echo
   	echo 'Pulse una tecla...'
        read
done

Ejemplos de uso:

1) Copia el script en la siguiente ruta /usr/local/bin/subtitles.sh para poder ejecutarlo desde cualquier directorio

2) Concede permisos de ejecución en modo root:
 

# chmod + x subtitles.sh

 

3) Ejecuta el script en modo usuario:

 

$ bash subtitles.sh

 

Comentarios:

MEncoder es un codificador de vídeo libre liberado bajo licencia GPL que se incluye en el reproductor multimedia MPlayer.  MEncoder ha sido construido usando las fuentes de MPlayer, este codificador permite convertir entre todos los formatos que este reproductor es capaz de soportar. También permite copiar sin modificaciones tanto la cadena de vídeo como la de sonido. Además soporta casi todos los filtros de MPlayer, y este último puede ser usado para visualizar su salida.

Fuentes:

https://es.wikipedia.org/wiki/MEncoder

http://www.mplayerhq.hu/DOCS/HTML/es/