Ir para o conteúdo
OneKitly

Legendas dessincronizadas: medir o desvio e deslocar um SRT um número exato de segundos

Publicado a 05/08/2026 · 15 min de leitura · Ferramentas para programadores

Daniel Okonkwo

Daniel OkonkwoProgramador front-end e redator de Tecnologia na OneKitly

Desempenho web · Formatos de ficheiro

Verificado a partir de 4 fontes

Ver perfil
Em resumo

Meça o desvio antes de deslocar seja o que for. Encontre uma fala inconfundível perto do início, anote o instante exato em que é dita no leitor, subtraia a marca de início da legenda e tem o desvio em segundos — depois repita a medição perto do fim do filme. Se os dois números coincidirem, a faixa tem um desvio constante e um só deslocamento corrige o ficheiro inteiro: cole o SRT, introduza o desvio em segundos (positivo atrasa, negativo adianta) e recolha o ficheiro corrigido. Se o segundo número for maior do que o primeiro, não é um desvio, é uma deriva, e nenhum deslocamento a corrigirá. A deriva quase sempre significa um conflito de cadência. Uma faixa acertada por um master a 25 fps e lida sobre uma transferência a 23,976 fps — 23,976 é exatamente 24000/1001 — precisa que as suas marcas sejam multiplicadas por 1,042708, e não deslocadas: o erro cresce 2,5625 segundos por cada minuto de projeção, ou seja um segundo a cada 23,4 segundos e 3 minutos 50,6 segundos ao longo de uma linha de tempo de legendas de 90 minutos. O par mais suave, 24 contra 23,976 ou 30 contra 29,97, vale exatamente 1,001 — apenas 5,4 segundos nesses mesmos 90 minutos, e por isso é confundido com um desvio constante durante a primeira meia hora. Um comportamento a conhecer antes de escrever um valor negativo: uma legenda empurrada por completo para antes do zero é removida, não achatada, e uma linha âmbar por cima da saída conta quantas se foram. Uma legenda a cavalo do zero mantém o seu fim real e começa em 00:00:00,000. Isso torna também um deslocamento negativo grande numa forma viável de cortar uma introdução: as legendas que lá estavam desaparecem, tudo o que se segue mantém o espaçamento, e diz-se-lhe o que se perdeu.

Meça o desvio em dois pontos em vez de o adivinhar uma vez. Se for constante, um único deslocamento corrige o ficheiro. Se crescer, é um problema de cadência — 25 fps contra 23,976 deriva 2,5625 segundos por minuto — e nenhum deslocamento o corrigirá.

Meça o desvio, não o avalie a olho

Escolha uma fala que não possa confundir — um nome, um número, um grito, algo que comece por uma consoante nítida. Reproduza o filme, pause no fotograma em que o som começa e leia o relógio do leitor. Depois procure essa mesma fala no ficheiro de legendas e leia a sua marca de início. O desvio é o tempo do vídeo menos o tempo da legenda. Se o vídeo marca 00:04:12,500 e a legenda 00:04:09,000, as legendas passam 3,5 segundos adiantadas e o desvio a aplicar é de +3,5 segundos.

Agora faça-o uma segunda vez, tão perto do fim do filme quanto encontrar uma fala limpa. Esta segunda medição é todo o diagnóstico, e saltá-la é a razão pela qual se desloca quatro vezes o mesmo ficheiro sem nunca o corrigir. Dois números que coincidem a umas décimas significam desvio constante: um deslocamento e está feito. Dois números que diferem em minutos significam que o ficheiro não está desviado, está a correr à velocidade errada, e cada deslocamento corrigirá uma ponta do filme piorando a outra.

Uma nota prática sobre ler o relógio: a maioria dos leitores mostra a posição à décima de segundo, e uma décima fica muito abaixo do que um espectador nota, por isso aqui não é preciso rigor ao fotograma. O que é preciso é honestidade sobre que instante mediu. Meça o instante em que o som começa, não aquele em que dá por ele, e meça o mesmo tipo de instante das duas vezes — caso contrário as duas leituras diferem pelo seu tempo de reação e inventa uma deriva que não existe.

Quando o desvio cresce: a aritmética das cadências

O mesmo filme existe em duas famílias de velocidade, e o ficheiro de legendas lembra-se de contra qual foi escrito. A família de cinema anda a 24 fotogramas por segundo, ou a 24000/1001 — 23,976 — em qualquer transferência que tenha tido de caber na cadência da televisão a cores americana. A família de difusão de quase toda a Europa anda a 25. Não são etiquetas decorativas: as próprias abreviaturas de cadência do ffmpeg escrevem-nas como frações exatas, film = 24/1, pal = 25/1, ntsc-film = 24000/1001, ntsc = 30000/1001. Um ficheiro de legendas feito para uma e lido sobre a outra não está no sítio errado, anda à velocidade errada.

A correção é uma multiplicação, não uma soma. As marcas escritas para uma versão a 25 fps, lidas sobre uma versão a 23,976 fps, têm de ser multiplicadas por 25 ÷ (24000/1001) = 25025/24000 = 1,042708. Leia isso como uma taxa de erro e torna-se reconhecível à vista: 2,5625 segundos de deriva por minuto de projeção, um segundo inteiro a cada 23,4 segundos. Ao longo de uma linha de tempo de legendas de 90 minutos acumulam-se 230,6 segundos — 3 minutos 50,6 segundos. Ao contrário, uma fala que pertence ao minuto 90 da transferência a 23,976 leva uma marca de 25 fps de 86 minutos 18,8 segundos e aparece 3 minutos 41,2 segundos cedo demais.

O par perigoso é o pequeno. Passar de 24 para 23,976, ou de 30 para 29,97, é uma razão de exatamente 1,001, que sobre os mesmos 90 minutos dá 5,4 segundos. Nos primeiros vinte minutos é invisível; na última bobina é uma frase inteira fora do sítio. Desloca-se esse ficheiro dois segundos, vê-se o princípio com satisfação e uma hora depois volta o mesmo problema — porque nunca foi um desvio. Duas medições separadas por uma hora dizem-lhe qual dos dois tem em cerca de noventa segundos de trabalho.

Esta ferramenta desloca e não redimensiona, e é melhor dizê-lo com franqueza do que deixá-lo descobrir. Se as suas duas medições divergirem, o ficheiro precisa que cada marca seja multiplicada, o que implica uma ferramenta de conversão de cadência ou um script curto — e o multiplicador é a razão entre as suas duas posições medidas, não um valor a adivinhar. Divida o tempo real de vídeo da fala tardia pelo da fala inicial, faça o mesmo com as duas marcas de legenda; a razão entre essas duas razões é o que há a aplicar.

O que faz realmente aqui um deslocamento negativo

Um deslocamento negativo é o caso comum — legendas que chegam tarde têm de ser adiantadas — e é o único ponto em que uma ferramenta de legendas tem de decidir algo que o formato não decide por ela. Uma legenda em 00:00:01,000 deslocada −5 segundos começaria em −4 segundos. O SubRip não tem maneira de escrever isso. Há três respostas possíveis: escrever mesmo assim uma marca negativa e deixar o leitor engasgar-se, descartar a legenda, ou limitá-la a zero. Esta ferramenta escolhe entre as duas últimas, legenda a legenda, conforme o que sobra depois da origem.

O teste é feito sobre a marca de fim da legenda, o que produz dois resultados diferentes. Uma legenda a cavalo do zero fica truncada: a −2,5 segundos, 00:00:01,000 --> 00:00:04,000 volta como 00:00:00,000 --> 00:00:01,500. Mantém o seu fim real, portanto aparece logo no primeiro fotograma e dura um segundo e meio menos do que devia — visível, mas não fatal. Uma legenda empurrada por completo para antes do zero é outra coisa. A −5 segundos, essa mesma legenda acabaria a −1 segundo: não lhe resta nada para mostrar e é retirada do ficheiro. As legendas que sobrevivem são renumeradas a partir de 1, pelo que o que volta é um ficheiro mais curto e não um ficheiro recheado.

Empurre o ficheiro inteiro para trás o suficiente e as legendas contidas nesse troço desaparecem sem mais. Um deslocamento de −20 segundos aplicado a um ficheiro cujas três primeiras legendas cabem nos primeiros doze segundos já não devolve nada, e uma linha âmbar por cima da saída indica que todas as legendas ficam agora antes de zero. Aquém desse extremo, essa mesma linha leva duas contagens: quantas legendas foram removidas e quantas começavam antes de zero e passam a começar na origem. O que a ferramenta já não faz é perder legendas sem o dizer: leia as contagens antes de sobrescrever seja o que for e compare-as com o que esperava perder.

Isso faz também de um grande deslocamento negativo uma verdadeira ferramenta de corte. Retire uma introdução de trinta segundos do início de um vídeo, desloque as legendas −30 segundos, e as que pertenciam à introdução são removidas, a que fica a cavalo do corte começa no primeiro fotograma com o seu fim real, e tudo o que se segue mantém o espaçamento. A contagem no aviso é a verificação: se disser quatro legendas removidas e contava perder duas, o seu desvio ultrapassava a duração da introdução.

O que sai de volta, e o que muda em silêncio

A saída é sempre SubRip, entre o que entrar. As legendas são renumeradas a partir de 1 pela ordem do ficheiro, as marcas são escritas como HH:MM:SS,mmm com uma vírgula antes dos milissegundos, e tudo o que está entre a linha da marca e a linha em branco passa intacto — incluindo as suas etiquetas de itálico ou os travessões de diálogo. Este último ponto conta: isto é um reajustador de tempos, não um limpador, e não alterará o seu texto de forma nenhuma.

Também lê um ficheiro WebVTT, e vale a pena sabê-lo porque o resultado não é o que um utilizador desprevenido espera. Cole um .vtt: a ferramenta encontra as legendas, deita fora a linha de cabeçalho WEBVTT, deita fora os identificadores de legenda e quaisquer definições colocadas depois da seta, converte o ponto decimal em vírgula e devolve-lhe SubRip. Os tempos deslocam-se corretamente. Mas o ficheiro que volta já não é WebVTT válido — o cabeçalho é uma exigência estrita da especificação, e as definições de posicionamento em que talvez confiasse desapareceram. Se queria um .vtt deslocado, não é por aqui.

Dois pequenos factos sobre os limites, ambos encontrados dando à ferramenta a sua própria saída. O leitor de marcas aceita até três dígitos no campo das horas, por isso uma marca como 111:06:41,000 é relida sem problema; o teto fica em 999:59:59,999, para lá do qual a ferramenta escreveria horas que já não conseguiria reler — um muro que nenhum filme alcançará. E o desvio é arredondado a milissegundos inteiros na saída, de modo que um valor de 0,0005 segundos se torna um movimento de um milissegundo em vez de nada. Nenhum incomodará um filme, mas ambos merecem ser conhecidos se encadear operações.

Deriva por minuto
A mesma linha de tempo de legendas de 90 minutos sob cinco conflitos de cadência — multiplicador, deriva por minuto, deriva total
ConflitoMultiplicador a aplicarDeriva por minutoDeriva em 90 minutosComo se vê a ver
Desvio constante (qualquer causa)1,000000 — desloque em vez disso0 s0 sIgualmente errado no minuto 1 e no 89 — um só deslocamento corrige
Legendas a 24 fps sobre vídeo a 23,976 fps (ou 30 sobre 29,97)1,0010000,060 s5,4 sInvisível durante vinte minutos, uma frase fora do sítio no fim — o caso mais mal diagnosticado
Legendas a 25 fps sobre vídeo a 24 fps1,0416672,500 s3 min 45,0 sAs legendas adiantam-se e a diferença abre-se logo na primeira bobina
Legendas a 25 fps sobre vídeo a 23,976 fps1,0427082,563 s3 min 50,6 sO clássico conflito PAL-cinema: um segundo perdido a cada 23,4 segundos
Legendas a 23,976 fps sobre vídeo a 25 fps0,959041−2,458 s−3 min 41,2 sO mesmo conflito ao contrário: as legendas atrasam-se cada vez mais
Ajuste de tempo de legendas SRTCorrige legendas dessincronizadas deslocando cada marca de tempo de um ficheiro SRT no mesmo desvio. Cola as legendas, introduz um desvio positivo para as atrasar ou negativo para as adiantar, em segundos ou milissegundos, e copia ou descarrega o ficheiro corrigido. Os tempos nunca ficam negativos.Experimentar a ferramenta

Perguntas frequentes

Como meço o desvio com precisão sem avançar fotograma a fotograma pelo filme todo?
Duas medições chegam, e basta precisão à décima de segundo. Procure uma fala que comece por consoante nítida perto do início do filme, pause no fotograma em que o som começa e leia a posição do leitor; subtraia-lhe a marca de início da legenda. Faça o mesmo com uma fala perto do fim. Se os dois desvios coincidirem, aplique a sua média e está feito. Aqui a constância do método conta mais do que a precisão: meça sempre o mesmo instante — o começo do som, não o momento em que o reconhece —, porque um erro de tempo de reação de meio segundo numa das duas medições chega para inventar uma deriva inexistente. Se o seu leitor só mostra segundos inteiros, use um que mostre décimas: a diferença entre 3 e 3,5 segundos de desvio vê-se no ecrã.
As minhas legendas estão perfeitas no início e cerca de quatro minutos adiantadas no fim. O que é isso?
É um conflito de cadência, e a sua dimensão diz qual. Cerca de quatro minutos de deriva ao longo de uma longa-metragem é a assinatura de legendas a 25 fps sobre um vídeo a 23,976 fps: o multiplicador é 1,042708, a deriva 2,5625 segundos por minuto, e sobre uma linha de tempo de legendas de 90 minutos soma 230,6 segundos — 3 minutos 50,6 segundos, ou 3 minutos 41,2 segundos se a medir contra o relógio do vídeo. Um deslocamento não pode repará-lo, porque soma o mesmo número a cada marca ao passo que o seu erro é proporcional à marca. É preciso multiplicar cada marca por 1,042708, o que é conversão de cadência e não deslocamento temporal. Esta ferramenta não o faz, e aplicar um deslocamento só mudará de uma ponta do filme para a outra o ponto em que as legendas calham certas.
O que acontece às legendas que um deslocamento negativo empurra para antes de 00:00:00,000?
São removidas, e a ferramenta diz quantas. A decisão é tomada sobre a marca de fim, daí dois resultados. Uma legenda a cavalo do zero mantém o seu fim real: deslocar 00:00:01,000 --> 00:00:04,000 em −2,5 segundos devolve 00:00:00,000 --> 00:00:01,500, que aparece desde o primeiro fotograma e dura um segundo e meio a menos. Uma legenda cujo fim também passou para antes do zero não tem nada para mostrar e é descartada; as sobreviventes são renumeradas a partir de 1, pelo que a saída é um ficheiro válido mais curto e não um ficheiro recheado de entradas vazias. Uma linha âmbar por cima da saída leva as contagens — quantas legendas foram removidas, quantas passam a começar na origem — e, se o deslocamento apagar tudo, di-lo em vez de lhe entregar um ficheiro. Nunca são escritos tempos negativos. Na prática, isto faz de um grande deslocamento negativo uma forma utilizável de cortar uma introdução: compare o número removido com as legendas que contava perder antes de sobrescrever seja o que for.
Posso colar um ficheiro WebVTT, ou só aceita SubRip?
Lê WebVTT, mas devolve-lhe SubRip, e essa conversão não é gratuita. O WebVTT é uma especificação do W3C: o ficheiro tem de abrir com uma linha WEBVTT, as marcas usam um ponto antes da fração de três dígitos e não uma vírgula, o campo das horas é opcional, e uma linha de tempos pode levar uma lista de definições depois da seta — alinhamento, posição, região — além de um identificador opcional na linha de cima. Esta ferramenta encontra os tempos, desloca-os e escreve SubRip: o cabeçalho desaparece, os identificadores desaparecem, as definições desaparecem e o ponto passa a vírgula. Se a sua origem era WebVTT com estilo ou posicionado, tudo isso é descartado sem aviso. Se o que quer na verdade é texto simples a partir de um ficheiro de legendas e não um ficheiro reajustado, o conversor de VTT para TXT é a via honesta.
Existe uma especificação oficial do SubRip com que possa verificar o meu ficheiro?
Não, e vale a pena sabê-lo antes de discutir com uma ferramenta sobre o que é válido. O formato é aquilo que o programa SubRip original produzia, mais aquilo que os leitores depois decidiram tolerar. A Biblioteca do Congresso descreve-o como parcialmente documentado e mal normalizado, e não lista qualquer documento de especificação; a sua ficha dá a forma do código de tempo como horas:minutos:segundos,milissegundos, com a vírgula, e a seta como dois hífenes e um sinal de maior. Também não existe um tipo de media registado, ao passo que o WebVTT tem text/vtt registado na IANA. Na prática, isto significa que a codificação é um palpite — o programa original saía por omissão numa página de códigos Windows, pelo que qualquer analisador tem de tentar detetar o conjunto de carateres — e que quando duas ferramentas divergem sobre o seu ficheiro, nenhuma está errada face a uma norma. Teste no leitor que vai mesmo usar.

Artigos que podem interessar-lhe

Todos os guias
TutorialDe SRT para texto: obter uma transcrição limpa a partir de legendasRetirar os números e as marcas de tempo é a metade fácil. A que decide se a transcrição se lê são as etiquetas de itálico, os travessões de diálogo, as descrições sonoras e as frases partidas em duas legendas — e este conversor deixa-lhe todas elas.TutorialDas legendas para a folha de cálculo, e de volta: o que sobrevive à viagemUma vírgula é protegida, uma aspa é duplicada e uma legenda de duas linhas mantém as duas — verificado byte a byte em três viagens consecutivas. O que ainda pode alterar o seu ficheiro é a folha de cálculo pelo meio.TutorialFundir duas faixas de legendas numa versão bilingue: o que acontece mesmo às legendasA legenda 12 da faixa inglesa não é a legenda 12 da francesa, porque os tradutores partem e juntam as frases de outra maneira. Existem duas estratégias para as emparelhar; este combinador não usa nenhuma — intercala. Eis o que dá e quando chega.ExplicaçãoPorque é que o seu corte de vídeo cai dois segundos antesPediu 1:23 e obteve 1:21. Nada está avariado: um corte que não recodifica só pode cair num fotograma-chave, e a que distância está o mais próximo depende inteiramente do que gravou o vídeo. Eis como saber qual tem e quando aceitar o desvio.GuiaRetirar imagens fixas de um vídeo — e porque parecem mais moles do que o vídeoTrês comandos escondem-se atrás de três botões: um fotograma num instante dado, um número fixo repartido pelo clipe, ou um a cada N segundos. Eis os argumentos exatos, o teto de 60 fotogramas e a razão por que um fotograma tirado do meio de um clipe comprimido nunca será tão nítido como um fotograma-chave.TutorialRetirar o áudio de um vídeo sem uma segunda geração de perdaA banda sonora dentro do seu vídeo já passou uma vez por um codificador com perdas. Que extraí-la lhe custe uma segunda passagem depende inteiramente de qual dos três botões carrega — e «extrair para MP3», aquele a que toda a gente vai, é o que custa.

Ferramentas relacionadas

O SubRip não tem especificação. A Biblioteca do Congresso descreve-o como parcialmente documentado e mal normalizado, portanto o que conta como ficheiro .srt válido é decidido pelo leitor, pelo codificador ou pela plataforma que o lê, e dois deles acabarão por divergir. Tudo o que aqui se descreve foi verificado na saída real da ferramenta e não numa norma, porque este formato não tem nenhuma. O WebVTT é diferente — tem uma especificação publicada pelo W3C — mas continua a ser um Candidate Recommendation Draft e não uma recomendação concluída. Guarde o ficheiro original, teste o ficheiro convertido no leitor ou no serviço de envio que tenciona mesmo usar antes de deitar fora o que quer que seja, e trate qualquer afirmação sobre o que fazem «todos os leitores», incluindo as desta página, como algo a confirmar no seu.

Fontes

Detetaste um erro neste artigo?