Ir para o conteúdo
OneKitly

Fundir duas faixas de legendas numa versão bilingue: o que acontece mesmo às legendas

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

Este combinador não emparelha legendas de todo, e sabê-lo antes de começar poupa uma hora. Oferece dois modos. «Sobrepor» concatena as duas listas e ordena o resultado por tempo de início: nada é combinado, quatro legendas inglesas e três francesas produzem sete legendas distintas, cada uma ainda com uma só língua. «Anexar» desloca todo o segundo ficheiro para começar depois do fim do primeiro mais um intervalo escolhido, o que serve para juntar as legendas de duas partes de vídeo, não de duas línguas. Nenhum dos modos emparelha por índice nem por sobreposição temporal — as duas estratégias de que uma fusão bilingue precisaria. Isso conta, porque as contagens quase nunca coincidem: um tradutor que transforma duas falas inglesas curtas numa frase francesa já quebrou a correspondência dos índices, e a partir dessa legenda a numeração dos dois ficheiros diverge para sempre. «Sobrepor» continua útil quando as duas faixas foram acertadas pelo mesmo master, porque inícios iguais mantêm cada par lado a lado e a ordem de leitura conserva-se, pelo que a linha do primeiro ficheiro vem à frente. Mas assim que uma faixa se adianta quarenta milissegundos numa dada fala, esse par inverte-se e as suas duas línguas deixam de aparecer numa ordem constante. O que «sobrepor» nunca produz é uma legenda com duas linhas. Se é isso que quer, as duas línguas têm de ser juntas dentro do texto de uma mesma legenda, o que é uma edição de texto e não uma operação de tempos — e o SubRip não tem posicionamento nenhum, portanto onde as linhas caem no ecrã é decidido pelo leitor, não pelo seu ficheiro.

A 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.

Porque é que a legenda 12 não é a legenda 12

Pegue em doze segundos de diálogo. Em inglês são quatro legendas: «I told you.» / «I told you twice.» / «And you did it anyway.» / «That is the part I mind.» O tradutor francês funde as duas primeiras numa só linha que cabe confortavelmente no ecrã e entrega três legendas a cobrir esses mesmos doze segundos. A partir daí, a legenda inglesa 3 é a francesa 2, a inglesa 4 é a francesa 3, e cada divergência posterior — uma linha partida por velocidade de leitura, duas linhas juntas porque a língua de chegada é mais curta — volta a mover a correspondência. Nada, em nenhum dos dois ficheiros, guarda registo disso.

Portanto uma fusão bilingue tem de decidir, legenda a legenda, que linha de um ficheiro vai com que linha do outro, e só há duas maneiras honestas de o fazer. Emparelhar por índice é instantâneo e correto até à primeira divergência, após a qual erra com aprumo o resto do filme — e a falha é invisível num editor de texto, porque ambos os ficheiros continuam perfeitamente bem formados. Emparelhar por sobreposição temporal é a resposta a sério: duas legendas vão juntas quando os seus intervalos se cruzam acima de um certo limiar. É preciso esse limiar, porque a legenda do tradutor costuma começar uma fração mais tarde e porque uma legenda longa numa língua pode sobrepor-se a duas curtas na outra, o que obriga a escolher entre emparelhá-la com a sobreposição maior ou emparelhá-la com ambas.

O que este combinador faz em vez disso: intercalar e concatenar

O modo «sobrepor» pega na lista de legendas do primeiro ficheiro, na do segundo, põe-nas ponta a ponta e ordena o conjunto por tempo de início. É tudo. Nenhuma legenda é jamais combinada com outra, nenhum texto é junto, nenhum limiar é aplicado. Corra-o com o exemplo de quatro e três acima: devolve sete legendas, numeradas de 1 a 7, a alternar entre as duas línguas onde os tempos alternam. O contador por baixo da caixa di-lo antes mesmo de descer: sete, não quatro.

Não é inútil, e convém ser justo com os casos em que funciona. Se as duas faixas foram acertadas pelo mesmo master — o caso normal de uma edição legendada profissionalmente, em que o tradutor parte da marcação original — os tempos de início serão muitas vezes idênticos, e inícios idênticos mantêm cada par lado a lado na saída. A ordem por que as legendas foram lidas conserva-se, pelo que a linha do primeiro ficheiro vem à frente em cada empate, e obtém um ficheiro que alterna de língua de forma fiável. Testado com duas faixas de tempos idênticos, quatro legendas cada, a saída são oito legendas em pares estritos primeiro-ficheiro-depois-segundo.

A fiabilidade acaba assim que os tempos são apenas próximos em vez de iguais. Dê à faixa francesa um arranque quarenta milissegundos mais tarde em cada linha: os pares mantêm-se lado a lado, com o inglês sempre à frente. Dê-lhe um arranque quarenta milissegundos mais cedo numa só linha e esse par inverte-se: a linha francesa passa a ser a legenda 1 e a inglesa a 2, enquanto o resto do ficheiro conserva a ordem contrária. Ler uma faixa bilingue cuja ordem de línguas muda sem avisar é pior do que ler dois ficheiros separados; antes de usar uma saída «sobrepor» para estudar, confirme alguns pares espalhados pelo filme, e não só o primeiro.

O modo «anexar» é outra ferramenta para outro trabalho: juntar as legendas de um filme que chega em dois ficheiros. Calcula o maior tempo de fim do primeiro ficheiro, soma-lhe o intervalo que introduzir e acrescenta esse total a cada marca do segundo ficheiro. A armadilha é que soma às marcas próprias do segundo ficheiro em vez de as substituir. Se a sua segunda parte já está acertada a partir de zero, tudo sai certo. Se foi cortada de um ficheiro mais longo e a sua primeira legenda está em 00:10:00, obtém 00:10:13 em vez de 00:00:13 — a ferramenta foi testada exatamente com isso e produziu um buraco de dez minutos. Ponha primeiro o segundo ficheiro a zero com a ferramenta de deslocamento e só depois anexe.

Duas legendas na mesma janela, e porque ninguém lhe pode dizer o que acontece

Uma saída «sobrepor» contém frequentemente duas legendas consecutivas com tempos de início e fim idênticos — é exatamente o aspeto de um par bilingue depois de a ferramenta passar. O que um leitor faz com isso não está especificado em lado nenhum, porque o SubRip não tem especificação onde o especificar. A Biblioteca do Congresso não lista qualquer documento de especificação para o formato. O contentor Matroska, quando absorve SubRip, guarda o tempo de início como marca do bloco e a duração como duração do bloco, e nada mais: não há definições gerais para esse codec, portanto o contentor transporta o texto e o tempo e não tem campo onde registar uma preferência sobre sobreposições.

Na prática os leitores diferem, e o único procedimento fiável é testar o seu com uma amostra de trinta segundos antes de se comprometer com um filme inteiro. Alguns motores empilham as entradas simultâneas como linhas separadas; alguns mostram a última carregada e escondem a outra; alguns descartam uma em silêncio. Nenhum está errado, porque não há em que estar errado. Não transporte um pressuposto de um leitor de secretária para um telemóvel, uma aplicação de televisão ou uma página web: os caminhos de renderização são diferentes, e um ficheiro bilingue que fica bem num portátil pode mostrar uma só língua numa box.

A pergunta vizinha — onde aparece cada língua no ecrã — tem uma resposta mais curta: não o pode controlar a partir de um ficheiro SRT, porque o SubRip não tem posicionamento nenhum. A formatação do programa original limitava-se a negrito, itálico, sublinhado e cor, herdados das etiquetas HTML, e nada no formato trata da colocação. O WebVTT é o contrário: a sua linha de tempos pode levar uma lista de definições com alinhamento, linha e posição, e define blocos REGION inteiros para zonas de deslocamento. Se a colocação conta na sua faixa bilingue, essa é uma razão para trabalhar em WebVTT e não em SubRip.

Como meter mesmo duas línguas numa mesma legenda

O resultado que provavelmente quer é uma legenda por momento com duas linhas, o original em cima e a tradução em baixo. É uma operação de texto: as duas cadeias têm de acabar no mesmo corpo de legenda, separadas por uma quebra de linha. A via tentadora neste sítio é a ida e volta por folha de cálculo — exportar a primeira faixa com o conversor de SRT para CSV, colar a segunda língua numa coluna ao lado, construir uma coluna de texto combinada e reconstruir o ficheiro com o conversor de CSV para SRT. Essa via funciona de ponta a ponta, e o parágrafo seguinte explica porque se lhe pode confiar um filme inteiro.

As duas metades estão corretas. Uma legenda com quebra de linha é escrita como campo CSV entre aspas com uma quebra real lá dentro, que é a forma descrita pela RFC 4180 e a que uma folha de cálculo abre como uma única célula; o conversor de CSV para SRT lê o ficheiro como registos CSV e não como linhas de texto, por isso uma quebra só termina um registo quando cai fora das aspas. Testado com uma legenda bilingue feita à mão, «I told you.» sobre «Je te l'avais dit.», a ida e volta devolve as duas linhas dentro da mesma legenda, e um ficheiro que mistura legendas de uma, duas e três linhas volta idêntico byte a byte.

A receita prática é esta. Exporte a primeira faixa, cole a segunda língua numa coluna livre e construa uma coluna de texto combinada que ponha uma quebra de linha real dentro da célula entre as duas — Alt+Enter no Excel em Windows, o atalho próprio da sua folha noutros casos, e não uma barra invertida seguida de um n. Cole as quatro colunas de volta no conversor de CSV para SRT e as legendas saem com o original em cima e a tradução em baixo. Guarde a coluna de índice enquanto trabalha: a importação reconstrói pela ordem dela, por isso uma folha que tenha ordenado pelo caminho devolve-lhe na mesma um ficheiro por ordem cronológica. O que é preciso vigiar é a folha de cálculo e não as ferramentas — pode reinterpretar uma coluna de tempos assim que abre o ficheiro, portanto importe em vez de fazer duplo clique e ponha as duas colunas de tempo em Texto. Se preferir não passar por uma folha de cálculo, colar as duas faixas lado a lado num editor de texto e juntá-las à mão continua a ser a via mais curta para um punhado de legendas.

Quatro maneiras de combinar duas faixas de legendas, e o que dá cada uma a partir de 4 legendas inglesas e 3 francesas
EstratégiaComo decide o que vai com o quêResultado no exemploDisponível aqui?
Emparelhar por índiceA legenda n de um ficheiro com a n do outroCorreto até as contagens divergirem, depois errado até ao fimNão
Emparelhar por sobreposição temporalIntervalos que se cruzam acima de um limiar escolhido3 ou 4 legendas combinadas, conforme o limiarNão
Intercalar (esta ferramenta, modo «sobrepor»)As duas listas concatenadas e depois ordenadas por início7 legendas separadas, uma língua cada, pares só quando os inícios coincidemSim
Concatenar (esta ferramenta, modo «anexar»)O segundo ficheiro é empurrado para depois do fim do primeiro, mais um intervalo7 legendas a passar uma após a outra — para duas partes de vídeo, não duas línguasSim
Emparelhar à mão num editor de textoDecides tu, lendo os dois ficheiros lado a lado4 legendas, cada uma com duas linhas — o resultado bilingueNão é automatizado pelo fusor — faça-o num editor, ou pela ida e volta em CSV
Combinador de legendas SRTCombina dois ficheiros de legendas SRT num só, renumerado de forma limpa. O modo «anexar» desloca o segundo ficheiro para começar após o fim do primeiro, mais um intervalo opcional — ideal para juntar legendas de duas partes de vídeo. O modo «sobrepor» mantém os tempos originais e ordena cada legenda cronologicamente, para fundir duas faixas.Experimentar a ferramenta

Perguntas frequentes

O combinador emparelha a legenda 12 com a 12, ou usa os tempos?
Nem uma coisa nem outra, porque não emparelha de todo. O modo «sobrepor» concatena as duas listas de legendas e ordena o resultado por tempo de início; o modo «anexar» soma um desvio à segunda lista e coloca-a depois da primeira. Em ambos os casos cada legenda dos dois ficheiros sobrevive como legenda própria, conserva uma só língua e é renumerada na saída. Quatro legendas inglesas e três francesas dão sete legendas, não quatro combinadas, e a contagem que aparece por baixo da caixa di-lo antes mesmo de descer. Emparelhar por índice seria errado aqui de qualquer modo — as contagens divergem a primeira vez que um tradutor junta duas linhas curtas numa — e emparelhar por sobreposição temporal, que é a abordagem certa, exige um limiar para o qual esta ferramenta não tem campo. O que «sobrepor» lhe dá, quando as duas faixas foram marcadas pelo mesmo master, é um ficheiro em que cada par fica lado a lado, porque inícios iguais se ordenam juntos e a ordem de leitura é conservada.
Fundi 4 legendas inglesas com 3 francesas e obtive 7. É um erro?
Não, é o que intercalar significa, e sete é a resposta aritmeticamente correta para uma operação que não combina nada. A ferramenta faz exatamente o que anuncia — fundir dois ficheiros num só, renumerado — e «fundir ficheiros» não é a mesma operação que «fundir legendas». Se esperava quatro legendas com duas línguas cada, esperava um passo de emparelhamento que esta ferramenta não contém. Leia a saída de sete legendas como uma faixa de leitura intercalada e não bilingue: onde as duas faixas de origem tinham a mesma marcação verá as duas linhas seguidas, o que serve para estudar; onde os tempos diferem, uma língua aparecerá sozinha. Se precisa de um ficheiro bilingue a sério, os dois textos têm de acabar dentro de um mesmo corpo de legenda separados por uma quebra de linha, e lá se chega num editor de texto ou pela ida e volta em CSV, que agora devolve intacta uma legenda de duas linhas.
O que faz um leitor com duas legendas que ocupam exatamente a mesma janela?
Não há resposta que valha em todo o lado, e isso é um facto sobre o formato mais do que uma falha deste artigo. O SubRip não tem especificação: a ficha da Biblioteca do Congresso não lista qualquer documento de especificação e descreve o formato como parcialmente documentado e mal normalizado. Nada define, portanto, o que um motor de renderização deveria fazer quando duas entradas reclamam o mesmo intervalo. Alguns empilham-nas em linhas separadas, alguns mostram só uma, alguns descartam uma sem o dizer, e o mesmo ficheiro pode comportar-se de outra maneira num leitor de secretária, numa aplicação móvel e num navegador, porque os caminhos de renderização são diferentes. O contentor também não ajuda: quando o SubRip é integrado em Matroska, o tempo de início passa a ser a marca do bloco e o comprimento uma duração de bloco, e como não há definições gerais para esse codec, não há onde registar uma preferência. Teste uma amostra de trinta segundos no leitor que vai mesmo usar, e aí e não onde lhe der jeito.
Posso pôr o original em cima no ecrã e a tradução em baixo?
A partir de um ficheiro SRT não, porque o SubRip não tem posicionamento nenhum. A formatação que o programa original suportava limitava-se a negrito, itálico, sublinhado e cor, herdados das etiquetas HTML, e nada disso trata da colocação; o contentor Matroska confirma o mesmo do outro lado, guardando uma legenda SRT como texto mais uma marca mais uma duração e deixando vazios os dados privados do codec, porque não há definições gerais a registar. A ordem {\an8} que por vezes se vê em ficheiros extraídos pertence a outro formato e só funciona em leitores que a queiram respeitar. O que controla é a ordem das linhas dentro de uma mesma legenda, o que implica pôr as duas línguas na mesma legenda e aceitar a colocação que o leitor escolher para o bloco inteiro. Se a colocação conta mesmo, use WebVTT: a sua linha de tempos aceita uma lista de definições com alinhamento, linha e posição, e define blocos REGION para zonas de deslocamento — colocação real e especificada, não uma convenção.
Quando é o modo «anexar» a escolha certa, e que armadilha esconde?
É a escolha certa para um trabalho: um filme que chega como dois ficheiros de vídeo com um ficheiro de legendas cada. A ferramenta procura o maior tempo de fim do primeiro ficheiro, soma-lhe o intervalo que introduzir em segundos e acrescenta esse total a cada marca do segundo, de modo que a segunda parte arranca limpamente depois da primeira. A armadilha é que soma às marcas existentes do segundo ficheiro em vez de as substituir. Isso é correto quando o segundo ficheiro está acertado a partir de zero, o que é habitual se as duas partes foram legendadas em separado. É incorreto quando o segundo ficheiro foi cortado de um mais longo e conserva as posições originais: testado com um segundo ficheiro cuja primeira legenda estava em 00:10:00, anexá-lo depois de uma primeira parte de 12 segundos com um intervalo de 1 segundo colocou-o em 00:10:13 e não em 00:00:13, deixando dez minutos de silêncio no meio do resultado. A correção leva trinta segundos — desloque o segundo ficheiro menos a sua própria primeira marca antes de fundir — mas nada o avisa, portanto verifique a primeira legenda da segunda metade na saída.

Artigos que podem interessar-lhe

Todos os guias
TutorialLegendas dessincronizadas: medir o desvio e deslocar um SRT um número exato de segundosMeç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á.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.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.ExplicaçãoMP3, WAV, FLAC: o que cada conversão destrói realmenteUm destes formatos guarda as amostras, outro guarda as mesmas amostras empacotadas e o terceiro guarda um palpite sobre o que teria ouvido. Que conversões entre eles são gratuitas, quais são apenas caras e quais são portas de sentido único — com a aritmética de cada uma.ExplicaçãoNormalização de pico contra normalização de intensidade sonora, e o alvo que não se alcançaAmplificar até a amostra mais forte tocar num teto quase não muda a sensação de volume. Medir em LUFS muda. Esta ferramenta mede — em duas passagens, corretamente — e depois mostra um resultado que nunca verificou, e que em material corrente se pode afastar bem mais de um decibel.TutorialRetirar o som de um vídeo sem tocar na imagemUm só comando ffmpeg, nenhum codificador, e um resultado cujo fluxo de vídeo é byte a byte o de partida — verificado por soma de verificação. Mais a razão por que o ficheiro quase não encolhe, e a diferença entre uma faixa silenciosa e faixa nenhuma.

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?