Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
Linux: FluxBox
Por Sl0ck
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha



Scripts

Linux user

Publicado por Carlos em 26/03/2005    [ 3363 hits ]

Login: null_terminated, 62851 pontos

Homepage: http://nullterminated.livejournal.com/   


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

Scripts recomendados
   Script Linux recomendado Monitoramento Serviços por IP e PORTA !
   Script Linux recomendado COMPACTANDO DIRETORIO CRIADO PELO SARG
   Script Linux recomendado Backup de arquivos do Linux para um servidor FTP
   Script Linux recomendado Bash script para converter decimal para hexadecimal mole!
   Script Linux recomendado POSTFIX AUTOMÁTICO COM MYSQL E IPTABLES - ENVIA MSG CASO O USUÁRIO PASSE 90% DA SUA QUOTA

Comentários
[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.

[2] Comentário enviado por chemonz em 13/01/2006 - 15:41h:

não funcionou, mas corrigi a legenda na mão!!

http://geocities.yahoo.com.br/chemonz9/legendas/revolution_os.srt.tar.gz

baixe!


Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.