Sincronizar Subtítulos .srt
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.
Ver post
Comentar
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
IceBeat#2 hace 461 días
@ralexismf ey gracias! se hace lo que se puede, algo lento pero bueno :)
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?
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.
Wyd#5 hace 460 días
Muchas gracias Omega :) la verdad que la programacion no es lo mio :P
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.
Ignacio#7 hace 459 días
Listo, lo probé y me vino bárbaro. Gracias.
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.
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!
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.
Nassty#11 hace 443 días
srttool, mucho mas facil que eso
Brunetto#12 hace 433 días
Hola muy bueno tu blog eh! Qué CMS utilizas?
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
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!
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 !!!
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/
Omega#17 hace 405 días
@Mitsurugi LOOOL! Es mi imaginación o ponen "diseNiador" ?
IceBeat#18 hace 404 días
@Mitsurugi jeje tio! que estaba empezando :P.
@Omega ya ves, cosas de la Ñ en esa tipografía.
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
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.
asban#21 hace 384 días
muy buen blog, tiene temas muy interesantes
Queli Coto#22 hace 377 días
Que buena Icebeat, realmente se me ocurre darle un uso , para la sincronizaciónd e videos online
@ndreX!#23 hace 316 días
@ralexismf Sigues con vida Dani? =D
xaga#24 hace 305 días
yo iba a hacer lo mismo, muchas gracias, lo has clavado.
Jose Fonseca#25 hace 286 días
Hola, yo uso Time Adjuster para eso, corre sólo en Windows. http://www.ireksoftware.com/ta/
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
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
patoroco#28 hace 213 días
a ver si actualizamos ^^
icebeat#29 hace 212 días
Si solo llevo 250 días sin escribir hombre! no me seas impaciente.
@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... =)
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...
elefrEn#32 hace 174 días
Muy util, a mi tambien me han surgido dichos problemas con los subs
Sergio Fajardo#33 hace 155 días
Excelente post, me ha sido muy útil para algunos proyectos que he desarrollado.
Un saludo desde Colombia.
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.
stheffanylineth#35 hace 117 días
Probado y fue todo un exito!!! Muchas Graxias !!!
Mageownyou#36 hace 96 días
A ver, pero si esa función viene incorporada en VLC ¿qué estamos tontos?
Anónimo#37 hace 94 días
@icebeat Ya más de un año
Alfonso Acedo#38 hace 90 días
Dani! pásate por aqui y cuenta algo hombre! ;)
eee#39 hace 83 días
probandoooo
diseno de volantes#40 hace 83 días
Muy interesante el post, y el blog en general. gracias