Sincronizar Subtítulos .srt

Agregar a favoritos

40 Comentarios

Posteado hace 462 días en:

Algunas veces no sé porque pero la función del VLC para manipular los segundos de los subtítulos no funciona correctamente, suele ocurrir cuando no están bien sincronizados. La mejor forma es bajarte un programita y alterar la linea de tiempo. No entiendo la razón pero no he encontrado ninguna aplicación web que lo haga así que me he creado una clase en PHP para manipular los archivos .srt

<?php

class Subtitle {

    function Subtitle($srt) {
        $this->name = $srt;
        $this->file = @file_get_contents($srt);
    }

    function time($time=0) {
        $this->time = $time;
        $this->file = preg_replace('!([0-9:]{8}),([0-9]{3}) --> ([0-9:]{8}),([0-9]{3})!e',
                    '$this->sync("\\1").",\\2 --> ".$this->sync("\\3").",\\4"', $this->file);
    }

    function sync($time) {
        $time = strtotime($time);
        $time = $time+$this->time;
        return date('H:i:s', $time);
    }

    function save($name='') {
        if($name) $this->name = $name;
        $fp = @fopen($this->name, 'w');
        if(!$fp) return false;
        fwrite($fp, $this->file);
        fclose($fp);
        return true;
    }

}
?>

Su uso es muy fácil, solo tienes que pasar la ruta del archivo e indicar cuantos segundos quieres añadir o quitar, si quieres quitar solo tienes que poner el valor en negativo.

$subs = new Subtitle('subs.srt');
//añadir 5 segundos, quitar -5
$subs->time(5);
//si no le pasas un nuevo nombre reemplaza el archivo
$subs->save();

Lo único que hace es manipular los segundos, consiguiendo que puedas ir sincronizando poco a poco aquellos subtítulos que por cualquier razón no coinciden con el archivo de video bajado.


  • avatar

    ralexismf#1 hace 462 días

    Enhorabuena campeon, siempre me asombran tus codigos, muy utilez, limpios y entendibles... Mil gracias por compartirlos...... Y felicidadez por el piso


  • avatar

    IceBeat#2 hace 461 días

    @ralexismf ey gracias! se hace lo que se puede, algo lento pero bueno :)


  • avatar

    Wyd#3 hace 461 días

    Me parece exelente esto que hiciste Daniel, pero hay algo que no entiendo, esta parte del codigo:

    "$subs = new Subtitle('subs.srt'); //añadir 5 segundos, quitar -5 $subs->time(5); //si no le pasas un nuevo nombre reemplaza el archivo $subs->save();"

    Hay que añadirla tambien en la clase subtitle o donde?

    y como ejecuto el codigo para que modifique el srt? en el localhost?


  • avatar

    Omega#4 hace 460 días

    Se ve muy interesante =)

    @Wyd Si, tienes que ejecutarlo en localhost. Y ese código que has puesto es la llamada a la clase. Puedes ponerlo en el mismo archivo (al final del todo) u en otro (en este caso tendrás que poner un include hacia la clase).

    Saludos.


  • avatar

    Wyd#5 hace 460 días

    Muchas gracias Omega :) la verdad que la programacion no es lo mio :P


  • avatar

    Ignacio#6 hace 460 días

    AHHHHHH, hubiera visto esto ayer y no me miraba la 2da parte de Se7en en inglés! Aunque la entendí muy bien igual. Muy buena peli.


  • avatar

    Ignacio#7 hace 459 días

    Listo, lo probé y me vino bárbaro. Gracias.


  • avatar

    Santiago#8 hace 458 días

    Y si quisieramos cambiar la velocidad de frames ? :P Muy buena iniciativa, mis felicitaciones por tu creatividad y emprendimiento.


  • avatar

    blinkster05#9 hace 451 días

    Hola!

    Usted tiene un buen Blog. Por es lo invito a pasar por mi blog Informatico si no es mucha molestia. No te tomara ni un minuto en pasar a dar un "ojo". Y talvez nos podriamos entrelazar. Tambien a todos aquellos que leen esto estan Bienvenidos en mi Blog.

    =D

    http://spam-en-vivo.blogspot.com

    Gracias!

    Saludos!


  • avatar

    enbugu#10 hace 447 días

    hola a ver si me podéis ayudar...

    no consigo sincronizar los subtítulos. probé antes con divxplayer y ahora con vlc, pero no consigo nada. he googleado, y he dado con esta página, pero no controlo esto del php. me podríais explicar cómo lo puedo hacer?

    tengo el archivo .srt y el archivo .avi

    un saludo y gracias por adelantado.


  • avatar

    Nassty#11 hace 443 días

    srttool, mucho mas facil que eso


  • avatar

    Brunetto#12 hace 433 días

    Hola muy bueno tu blog eh! Qué CMS utilizas?


  • avatar

    Nejo#13 hace 431 días

    hace mucho que no toco la programación para hacer arreglos y mejorar mi vida cotidiana xD, entonces usaba Java en vez de PHP :S

    pero bueno al caso, que esto me hace recapacitar y a ver si hago algo constructivo para que m facilite alguna cosa d mi vida, y luego recomendaros a todos el KMPlayer http://www.kmplayer.com/es


  • avatar

    Nicolás#14 hace 428 días

    Excelente tu trabajo y sinceramente es muy usable.

    Como idea, se podría crear una aplicación web donde uno suba su subtítulo, indique los tiempos para sincronizarlos y te devuelva el archivo sincronizado.

    No necesitaría tampoco demasiados recursos ya que los archivos de subtítulos pesan unos pocos kb.

    Suerte!


  • avatar

    Dany#15 hace 411 días

    Les aconsejo que le echen una miradita a este software: http://www.urusoft.net/download.php?lang=1&id=sw4

    Es un programa creado en Uruguay para manipular subtítulos en texto.

    ES E X C E L E N T E !!!


  • avatar

    Mitsurugi#16 hace 408 días

    @IceBeat hoy repasava archivos antigups de php hispano y me ido a topar con la siguiente url :P

    http://usuarios.lycos.es/grafic03/


  • avatar

    Omega#17 hace 405 días

    @Mitsurugi LOOOL! Es mi imaginación o ponen "diseNiador" ?


  • avatar

    IceBeat#18 hace 404 días

    @Mitsurugi jeje tio! que estaba empezando :P.

    @Omega ya ves, cosas de la Ñ en esa tipografía.


  • avatar

    Omega#19 hace 403 días

    @IceBeat suponía que era cosa de la tipografía, pero es curioso lo tuyo con las faltas en los logos jeje


  • avatar

    caos30#20 hace 387 días

    Vaya casualidad... yo me hice también una MINI-aplicación web para hacer lo mismo ;)

    http://www.guaser.info/subtitulos

    No solo sirve para atrasar o adelantar todos los subtitulos X segundos, sino también para "reescalar" la longitud de los mismos, si estableces el tiempo correcto para un subtitulo del principio y otro del final ;)

    Espero que os sirva. Salud. SERGI R.


  • avatar

    asban#21 hace 384 días

    muy buen blog, tiene temas muy interesantes


  • avatar

    Queli Coto#22 hace 377 días

    Que buena Icebeat, realmente se me ocurre darle un uso , para la sincronizaciónd e videos online


  • avatar

    @ndreX!#23 hace 316 días

    @ralexismf Sigues con vida Dani? =D


  • avatar

    xaga#24 hace 305 días

    yo iba a hacer lo mismo, muchas gracias, lo has clavado.


  • avatar

    Jose Fonseca#25 hace 286 días

    Hola, yo uso Time Adjuster para eso, corre sólo en Windows. http://www.ireksoftware.com/ta/


  • avatar

    Jose#26 hace 268 días

    Yo uso SubtitleSync. Es una pagina y funciona en Internet Explorer, Firefox y Safari Les paso el link: http://www.subtitlesync.com.ar


  • avatar

    hiulit#27 hace 219 días

    en VLC puedes usar las teclas G, H, J, K, L para sincronizar los subtítulos o el audio a tiempo real.

    Aunque está muy bien que te hayas creado esa clase en PHP!! :D


  • avatar

    patoroco#28 hace 213 días

    a ver si actualizamos ^^


  • avatar

    icebeat#29 hace 212 días

    Si solo llevo 250 días sin escribir hombre! no me seas impaciente.


  • avatar

    @ndreX!#30 hace 212 días

    @icebeat Haha ya casí llegas al record de 1 año, vamos hombre aunque sea un "Hola Mundo" vendría excelente... =)


  • avatar

    SsouL#31 hace 200 días

    Descubrí este blog hace poco, pero... no me había dado cuenta... 262 días sin escribir, debe de estar bastante ocupado el autor, una pena...


  • avatar

    elefrEn#32 hace 174 días

    Muy util, a mi tambien me han surgido dichos problemas con los subs


  • avatar

    Sergio Fajardo#33 hace 155 días

    Excelente post, me ha sido muy útil para algunos proyectos que he desarrollado.

    Un saludo desde Colombia.


  • avatar

    CMYK#34 hace 117 días

    Yo tampoco entiendo mucho de programación, pero se le saca utilidad a todo... jejeje Gran Blog. Saludos y suerte por Madrid.


  • avatar

    stheffanylineth#35 hace 117 días

    Probado y fue todo un exito!!! Muchas Graxias !!!


  • avatar

    Mageownyou#36 hace 96 días

    A ver, pero si esa función viene incorporada en VLC ¿qué estamos tontos?


  • avatar

    Anónimo#37 hace 94 días

    @icebeat Ya más de un año


  • avatar

    Alfonso Acedo#38 hace 90 días

    Dani! pásate por aqui y cuenta algo hombre! ;)


  • avatar

    eee#39 hace 83 días

    probandoooo


  • avatar

    diseno de volantes#40 hace 83 días

    Muy interesante el post, y el blog en general. gracias