domingo, 29 de abril de 2018

Script en BASH para incrustar subtítulos en videos con MEncoder

Les dejo script que contiene un código para incrustar subtítulos con Mencoder. Este script facilita al usuario incrustar subtítulos en modo básico y avanzado. Pueden descargar el script en este link o copiar y pegar este código en un archivo de texto:

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: