Pular para o conteúdo

Script Para Ajustar o Intevalo de Legendas

E Ai Comunidade!
Este Script tem o objetivo de ajustar os tempos das legendas (subtitles) de vídeos. As vezes as legendas parecem estar "atrasadas" em relação ao vídeo, isso acontece quando elas foram compostas em um PC mais lento que o seu (tudo é uma questão de pespectiva... :). Tive este problema em particular com as legendas do filme "Revolution OS".

http://www.vivaolinux.com.br/dicas/verDica.php?codigo=1978

Tentei deixar o script auto-explicativo, espero que seja util!
[]'s
Carlos null_terminated
Hits: 6.258 Categoria: Shell Script Subcategoria: Avançado
  • Download
  • Nova versão
  • Indicar
  • Denunciar

Descrição

E Ai Comunidade!
Este Script tem o objetivo de ajustar os tempos das legendas (subtitles) de vídeos. As vezes as legendas parecem estar "atrasadas" em relação ao vídeo, isso acontece quando elas foram compostas em um PC mais lento que o seu (tudo é uma questão de pespectiva... :). Tive este problema em particular com as legendas do filme "Revolution OS".

http://www.vivaolinux.com.br/dicas/verDica.php?codigo=1978

Tentei deixar o script auto-explicativo, espero que seja util!
[]'s
Download inctimest0.2.sh Enviar nova versão

Esconder código-fonte

#!/bin/sh
############################################################################
# Time Increment SubTitles 
# Ver 0.0.2
# (C) Copyleft 2005 Carlos "Null_Terminated" Andre
# Usage: ./inctimest.sh <time[h m s]> <subtitlefile>
############################################################################

############################################################################
# Know Bugs
# - Se uma legenda possuir mais de uma linha, a sequencia de tempos sera
#   perdida. Para resolver o problema, junte as duas ou mais linhas, pro
#   cesse o arquivo e depois separe-as... :)
############################################################################
TMP=${TMP:-/tmp}
INTERVALSU=$TMP/int.unprocess$$
INTERVALSP=$TMP/int.process$$
SUBTIT=$TMP/subtit$$
SCRAWK=$TMP/scrawk$$
CONT=1

# Verifica o numero de parametros passados ao programa
if [ $# -lt 2 ]; then
   echo "Usage: $0 time[h m s] subtitlefile"
   echo "Example: $0 10s subtitle.txt"
   exit 1
fi

# Nome do arquivo base sem extencao
BASE=$(echo $2 | sed -e "s/\....$//")
# Arquivo processado, resultado
RESULT=$BASE.processed

# Gera Script AWK que formatara os intervalos apropriadamente.
# Certamente seria mais "elegante" usar um arquivo em separado
# ao invez de gera-lo dinamicamente, mas seria menos prático.
cat << _FIM_ > $SCRAWK
{
   OFS=""
   inc=substr(param,1,length(param)-1)
   frt=substr(param,length(param),1)

   if (frt == "h")
   {
      val1=\$1+inc+100
      val1=substr(val1,2,2)

      val2=\$5+inc+100
      val2=substr(val2,2,2)

      print val1,":",\$2,":",\$3,",",\$4,"-->",val2,":",\$6,":",\$7,",",\$8
   }
   
   if (frt == "m")
   {
      val1=\$2+inc+100
      val1=substr(val1,2,2)

      val2=\$6+inc+100
      val2=substr(val2,2,2)

      print \$1,":",val1,":",\$3,",",\$4,"-->",\$5,":",val2,":",\$7,",",\$8
   }

   if (frt == "s")
   {
      val1=\$3+inc+100
      val1=substr(val1,2,2)

      val2=\$7+inc+100
      val2=substr(val2,2,2)

      print \$1,":",\$2,":",val1,",",\$4,"-->",\$5,":",\$6,":",val2,",",\$8
   }
   
}
_FIM_

# Gera um arquivo com os intervalos das legendas
cat $2 | sed -n -e 's/ --> /:/;s/,/:/g;/^0[01].*$/p' >> $INTERVALSU
# Processa o arquivo de intervalos incrementando os tempos necessários
awk -F ":" -v param=$1 -f $SCRAWK $INTERVALSU >> $INTERVALSP
# Gera um arquivo somente com as "legendas" em si
cat $2 | sed -n -e '/^0[01].*$/d;/^$/d;/[^1-9][^0-9][^0-9][^0-9]$/p' >> $SUBTIT

# Gera o seultado em si.
# $COUNT   = Indice
# $y      = Intervalos
# $SUBTIT   = Legendas em si
for y in `cat $INTERVALSP`; do
   echo $CONT >> $RESULT
   echo $y >> $RESULT
   cat $SUBTIT | sed -n -e ${CONT}'p' >> $RESULT
   echo -e "\n\c" >> $RESULT
   CONT=$((CONT+1))
done

# Limpa a casa
rm -f $INTERVALSU
rm -f $INTERVALSP
rm -f $SUBTIT
rm -f $SCRAWK

Atualização do FreeBSD

Verifica últimos arquivos criados

backup rsync

Cadastro automatizado para DHCP, Sarg, ethers e hosts

Árvore de Natal do Julio Neves

#1 Comentário enviado por goss em 02/11/2005 - 10:54h
Não consegui fazer funcionar o seu script, se puder me mandar a legenda com o tempo já arrumado eu agradeço.
ronaldo_caldaz em yahoo.com.br
Um abraço.

Contribuir com comentário

Entre na sua conta para comentar.