[HOW TO] Añadir subtítulos a un avi para verlo en Xbox 360

Hace un par de semanas me hice con una Xbox 360 y aprovechando que la tengo puesta en el salón (básicamente porque es el único sitio de la casa con sitio suficiente para el jugar al kinnet xD) he decido aprovecharlo como media center. Cuando tengo tiempo suelo ver bastantes series en inglés subtituladas y aquí surgió el problema, no he sido capaz de ver dichos subtitulos en la consola, solución: añadir los subtitulos a los ficheros. Para poder realizar esta tarea repetitiva de manera automática con linux, he escrito un pequeño script para ayudar a todo aquel que le pueda servir.

Realmente eso sirve tambien para verlo en el PC o en cualquier otro dispositivo que tenga los codecs necesario, en concreto este script está preparado para que el contenido sea reproducido por la consola.

Al lío, «requisitos»:

  • Tener instalado mencoder (en Ubuntu sudo apt-get install mencoder)
  • Video con extensión avi (en el script puede cambiarse)
  • Tener el subtitulo, salvo la extensión .srt con el mismo nombre que el archivo de video en el mismo directorio.
  • El subtitulo debe estar en ISO 8859-1 ( Latin 1), el script se encarga de pasarlo a UTF-8 y pegarlo bien al video.

Tras el salto, el código completo del script


#!/bin/bash

#Fuente utilizada en el subtitulo, asegurarse que está instalada o utilizar otra
FONT=/usr/share/vlc/skins2/fonts/FreeSans.ttf
VIDEO_EXT=avi
NAME_FILE=/tmp/filename.tmp
SUB_FILE=/tmp/out.srt

obtener_subtitulo(){
  echo $1 > $NAME_FILE
  sed -i 's/'$VIDEO_EXT'/srt/g' $NAME_FILE
  SUB=`cat $NAME_FILE`
  rm $NAME_FILE
  if [ ! -e $SUB  ]; then
   echo "[Error] No se encuentra el fichero de subtitulos: " $SUB
   exit -1;
  fi;
  echo $SUB
}

convertirIso2Utf8(){
  iconv -f ISO-8859-1 -t UTF-8 $1 -o $SUB_FILE
  rm $1
  mv $SUB_FILE $1
}

rip(){

  local MOVIE=$1
  local SUB=`obtener_subtitulo $MOVIE`
  local OUT=$MOVIE.sub.$VIDEO_EXT

  convertirIso2Utf8 $SUB

  echo "rip "$1
  if [ -e $OUT ]; then
    rm $OUT
  fi;
  mencoder $MOVIE  -ffourcc XVID -sub $SUB -oac mp3lame -lameopts cbr:br=128 -ovc xvid -xvidencopts pass=1 -o $OUT -subcp utf-8 -font $FONT

}

case $# in

0)
  echo "[Error] Número incorrecto de parámetros." $0 "fichero_origen" " [fichero destino] "
  exit -1;
  ;;
1)
  echo "1: "$1
  rip $1
  ;;
*)
  for item in $*
  do
    rip $item
  done
  ;;

esac

Normalmente los script que suelo escribir, son para uso privado, pero al ser este bastante útil he decidido publicarlo, se admiten mejoras y críticas siempre que sean constructivas.

Para utilizarlo, copiar, pegar y dar permisos de ejecución a un fichero de texto:

$>chmod +x  script 

 

Y ejecutar

$>./script <fichero(s) .avi>

 

Por último un par de referencias que he utilizado:

7 responses to this post.

  1. […] ha escrito un script para añadir subtítulos a un AVI para Linux que pone generosamente a disposición de quien […]

  2. […] has written a script to add subtitles to AVI for generously putting Linux available to those who need to add subtitles […]

  3. […] ha escrito un script para añadir subtítulos a un AVI para Linux que pone generosamente a disposición de quien […]

  4. […] ha escrito un script para añadir subtítulos a un AVI para Linux que pone generosamente a disposición de quien […]

  5. […] ha escrito un script para añadir subtítulos a un AVI para Linux que pone generosamente a disposición de quien […]

  6. […] ha escrito un script para añadir subtítulos a un AVI para Linux que pone generosamente a disposición de quien […]

  7. Posted by Bernat on 30 agosto 2014 at 10:34 am

    Mil gracias por este script, lo he usado para PS3 i funciona perfecto.

Deja un comentario