Ir para o conteúdo
Allin

Das legendas para a folha de cálculo, e de volta: o que sobrevive à viagem

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

Daniel Okonkwo

Daniel OkonkwoProgramador front-end e redator de Tecnologia na Allin

Desempenho web · Formatos de ficheiro

Verificado a partir de 3 fontes

Ver perfil
Em resumo

As duas metades da viagem estão conformes e uma legenda volta exatamente como saiu. À ida, cada legenda torna-se uma linha de índice, início, fim e texto; qualquer campo que contenha uma vírgula, uma aspa reta ou uma quebra de linha é colocado entre aspas duplas e as aspas internas são duplicadas, que é o que a RFC 4180 descreve. As marcas de tempo também ficam entre aspas automaticamente, porque o SubRip escreve os milésimos depois de uma vírgula: 00:00:01,000 contém um separador. À volta, o conversor de CSV para SRT lê o ficheiro como registos CSV e não como linhas de texto, por isso uma quebra de linha só termina um registo quando cai fora das aspas: uma legenda de duas linhas e outra de três voltam inteiras. Testado na saída do próprio exportador, um ficheiro que mistura legendas de uma, duas e três linhas, com vírgulas e aspas, reconstrói-se byte a byte igual e continua igual após três viagens consecutivas. A importação aceita ainda ficheiros separados por ponto e vírgula, reconstrói pela ordem da coluna de índice quando cada linha tem um número distinto, e avisa quando uma legenda acaba antes de começar ou quando uma linha não pôde ser lida. O que ainda exige cuidado não são os dois conversores mas a folha de cálculo pelo meio, que pode reinterpretar uma coluna de tempos assim que abre o ficheiro.

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

Porque uma folha de cálculo é a forma certa para rever

Um ficheiro de legendas é um mau objeto para entregar a alguém que não é legendador. Mistura conteúdo e maquinaria, por isso um revisor tem de saltar números e marcas de tempo para ler uma frase, e qualquer alteração acidental a uma marca fica invisível até à reprodução. Uma linha por legenda resolve os dois problemas de uma vez. O texto ocupa uma só coluna, legível de cima a baixo; os tempos ocupam as suas colunas, visíveis mas difíceis de tocar; e pode acrescentar-se uma segunda coluna para uma tradução, um comentário ou uma marca de aprovação sem incomodar nada.

As colunas que este conversor escreve são índice, início, fim e texto, por esta ordem, com uma linha de cabeçalho com exatamente esses quatro nomes. O índice é regenerado a partir da posição de cada legenda no ficheiro em vez de ser copiado da numeração de origem, por isso um ficheiro com contadores duplicados ou desordenados sai limpamente numerado a partir de um. Guarde essa coluna. À volta ela é lida e não ignorada: quando cada linha tem um número distinto, a importação reconstrói pela ordem do índice, de maneira que uma folha que ordenou por texto durante o trabalho produz na mesma um ficheiro de legendas na ordem certa.

Vírgulas, aspas e o RFC que as cobre

O diálogo está cheio de vírgulas, e a vírgula é o separador de campos: é a primeira coisa a verificar em qualquer ferramenta de legendas para CSV. O RFC 4180, a nota de 2005 que registou o aspeto habitual dos ficheiros CSV, dá a regra: os campos que contenham quebras de linha, aspas retas ou vírgulas devem ser fechados entre aspas, e uma aspa dentro de um campo desses escapa-se antepondo-lhe outra aspa. Este conversor cumpre as duas metades. «Bom, não, não exatamente.» escreve-se como um só campo entre aspas, e Ele disse "o porto", não as docas. escreve-se "Ele disse ""o porto"", não as docas.", entre aspas porque contém ao mesmo tempo uma aspa e uma vírgula, com cada aspa interna duplicada.

As marcas de tempo recebem o mesmo tratamento sem que ninguém o decida, e a razão é um feliz acidente do formato. O SubRip escreve os milissegundos depois de uma vírgula, portanto 00:00:01,000 contém um separador de campos e fica entre aspas em cada linha de cada ficheiro que esta ferramenta produz. Vale a pena notá-lo, porque é o único ponto em que a estranha escolha de separador do SubRip lhe faz um favor: uma marca WebVTT, que usa um ponto, sairia sem aspas e ficaria à mercê do que o programa leitor decidir que é um 00:00:01.000 desprotegido.

Dois desvios honestos, nenhum prejudicial mas ambos reais. O RFC 4180 diz que os registos são delimitados por retorno de carro e mudança de linha; este conversor escreve apenas uma mudança de linha, que toda a folha de cálculo aceita e que só conta se algo a jusante for muito literal. E o RFC tem estatuto Informational, não é uma norma: descreve o que as implementações fazem em vez de o impor, e a sua própria redação diz «deveriam» e não «devem». Tratá-lo como a definição do CSV é uma convenção útil, não uma garantia sobre o próximo programa que ler o seu ficheiro.

Quatro coisas a saber sobre a folha de cálculo pelo meio

O delimitador. As folhas de cálculo das línguas que usam a vírgula como separador decimal — ou seja, francês, alemão, espanhol, italiano e português — gravam frequentemente o ficheiro com pontos e vírgulas entre campos em vez de vírgulas, seguindo o separador de listas do sistema. A importação olha para o primeiro registo e conta os separadores que ficam fora das aspas, por isso um ficheiro assim é lido e não recusado; um ponto e vírgula dentro de uma legenda não é contado, porque está dentro de um campo entre aspas. Escolher explicitamente a variante separada por vírgulas, quando a folha a oferece, continua a dar um ficheiro mais limpo, mas uma gravação normal numa dessas cinco línguas já não lhe custa a importação.

Os tipos. O CSV não transporta qualquer informação de tipo — o RFC 4180 nada diz sobre tipos de dados, porque não há nada a dizer: todo o campo é texto. As aspas protegem a análise, não o sentido. Uma folha de cálculo lê o campo protegido, desembrulha-o e depois decide por si o que contém, e é aí que a marca de tempo corre perigo: 00:00:01,000 é uma cadeia que um programa tem o direito de ler como hora, como número com separador de milhares ou como texto, conforme a sua configuração regional e os seus palpites. Nada no ficheiro lho indica. O hábito fiável é importar em vez de abrir — usar a via de importação de texto da folha e pôr as duas colunas de tempo em Texto antes de os dados chegarem — e verificar uma marca antes de começar a editar.

As fórmulas. Uma legenda cujo texto começa por um sinal de igual, um mais ou uma arroba — e por um menos seguido de um algarismo ou de outro operador, como -1-1 — é escrita como campo entre aspas precedido de um apóstrofo, o escape que a folha de cálculo já entende: a célula mostra o texto e não avalia nada. A importação retira esse apóstrofo, pelo que =SUM(A1:A9) faz a viagem tal e qual. O travessão de diálogo é deixado de propósito em paz, porque uma linha que começa por «- Sim.» é uma fala em um em cada dois ficheiros de legendas e não é uma fórmula em folha nenhuma. Do que isto não o protege é de uma fórmula que escreva por si mesmo ao editar.

A ordem. Ordenar é o gesto mais natural numa folha de cálculo, por isso a importação lê a coluna de índice em vez de a ignorar: quando cada linha tem o seu próprio número distinto, a saída é reconstruída pela ordem do índice e um aviso indica que as linhas foram repostas em sequência. Ordene por texto para agrupar falas parecidas numa verificação terminológica e o SRT reconstruído sai na mesma por ordem cronológica. Se os números estiverem duplicados, ou em falta nalgumas linhas, a coluna não é de confiança: mantém-se então a ordem das linhas e a ferramenta di-lo. Os tempos invertidos são assinalados da mesma maneira: uma linha que vai de 00:00:09,000 a 00:00:04,000 continua a ser escrita tal e qual, mas é agora contada e nomeada em vez de passar em silêncio.

O conteúdo de uma legenda na viagem: exportado para CSV, editado numa folha, reconstruído como SRT
O que a legenda contémComo o CSV é escritoO que voltaVeredicto
Uma vírgulaCampo entre aspas duplasIdênticoSobrevive
Uma aspa retaCampo entre aspas, cada aspa interna duplicadaIdêntico, mesmo após várias viagensSobrevive
Uma quebra de linha (legenda de duas linhas)Campo entre aspas com quebra real lá dentro — corretoAs duas linhas, na mesma legendaSobrevive — idêntico byte a byte, três viagens
Uma marca de tempo, 00:00:01,000Sempre entre aspas — contém uma vírgulaIdêntica, se a folha não a reinterpretouSobrevive ao ficheiro; o risco é a folha
Um texto que começa por = + - ou @Entre aspas, com um apóstrofo à frente — o escape da folhaA célula mostra o texto; a importação retira o apóstrofoSobrevive — o travessão de diálogo não é tocado
Linhas reordenadas na folhaNada marca a ordem original a não ser a coluna de índiceA coluna de índice é lida; a saída é reconstruída pela sua ordemSobrevive — mantenha a coluna de índice e leia o aviso
Conversor de SRT para CSVConverte um ficheiro de legendas SRT num CSV pronto para folha de cálculo, com colunas de índice, início, fim e texto. Os campos com vírgulas ou quebras de linha são corretamente colocados entre aspas segundo a norma CSV, para abrir limpo no Excel, Sheets ou Numbers. Copia ou descarrega o ficheiro.Experimentar a ferramenta

Perguntas frequentes

Uma vírgula dentro de uma legenda estraga o CSV?
Não. Todo o campo que contenha uma vírgula, uma aspa reta ou uma quebra de linha é fechado entre aspas, e uma aspa dentro de um campo desses escapa-se duplicando-a, que é o que o RFC 4180 descreve. Testado com casos reais: «Bom, não, não exatamente.» torna-se um só campo entre aspas, e Ele disse "o porto", não as docas. torna-se "Ele disse ""o porto"", não as docas.", entre aspas porque contém ao mesmo tempo vírgula e aspa, com cada aspa interna duplicada. Os dois voltam idênticos byte a byte pelo conversor de CSV para SRT, e sobrevivem a três viagens consecutivas sem acumular aspas, que é a falha habitual de um escape ingénuo. As marcas de tempo ficam protegidas pela mesma regra sem que ninguém o tenha escolhido, porque o SubRip escreve os milissegundos depois de uma vírgula e 00:00:01,000 contém portanto um separador.
As legendas de duas ou três linhas sobrevivem à viagem?
Sim, e vale a pena saber porquê, porque é aí que este género de ferramenta costuma falhar. Uma legenda com quebra de linha é escrita como campo entre aspas com uma quebra real lá dentro, a cavalo sobre duas linhas físicas do ficheiro CSV — a forma correta segundo a 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; um registo repartido por três linhas físicas continua a ser um registo. Verificado na saída do próprio exportador: um ficheiro que mistura legendas de uma, duas e três linhas, uma com vírgula e outra com aspa, reconstrói-se byte a byte igual e continua igual após três viagens consecutivas. Se editar o texto numa folha de cálculo, use a quebra de linha dentro da célula — Alt+Enter no Excel em Windows — em vez de escrever uma barra invertida e um n, que são apenas dois caracteres de texto.
A minha folha de cálculo grava o ficheiro com pontos e vírgulas. Vai importar?
Sim. As folhas de cálculo seguem o separador de listas do sistema e, nas línguas que usam a vírgula como marca decimal — francês, alemão, espanhol, italiano, português —, esse separador é o ponto e vírgula, por isso uma gravação normal produz um ficheiro delimitado por ponto e vírgula. A importação olha para o primeiro registo do que colar, conta as vírgulas e os pontos e vírgulas que caem fora dos campos entre aspas e fica com o mais frequente; um ponto e vírgula dentro de uma fala não conta, porque está entre aspas. Ou seja, um ficheiro gravado a partir de uma folha em francês, alemão, espanhol, italiano ou português importa-se tal e qual. Escolher explicitamente a variante separada por vírgulas — normalmente oferecida com um nome como CSV UTF-8 ou «delimitado por vírgulas» — continua a ser o hábito mais limpo se for passar o ficheiro a outra coisa, mas já não é condição para que funcione aqui.
O Excel vai destruir as minhas marcas de tempo lendo 00:00:01,000 como hora ou como número?
Pode, e as aspas não o impedem, porque proteger e tipar são dois problemas distintos. O RFC 4180 nada diz sobre tipos de dados — um campo CSV é texto, e o formato não tem maneira de dizer outra coisa. As aspas indicam ao leitor onde o campo começa e acaba; uma vez desembrulhado, o que o leitor decidir que o conteúdo significa depende só dele, e o palpite de uma folha depende da sua configuração regional tanto como da cadeia. Não conte com a sorte: use a via de importação de texto da folha em vez de fazer duplo clique no ficheiro, e ponha as colunas de início e fim em Texto antes de os dados chegarem. Verifique depois uma marca na folha, antes de editar seja o que for, e confirme que continua a dizer 00:00:01,000 e não um valor alinhado à direita com outra forma. Se tiver sido convertida, feche sem gravar e importe de novo: reparar uma coluna de tempos estragados custa muito mais do que importá-la bem à primeira.
Posso acrescentar, apagar ou reordenar linhas na folha de cálculo?
Adicione e apague à vontade; reordene também à vontade, desde que guarde a coluna de índice. A importação lê essa coluna: quando cada linha tem o seu próprio inteiro distinto, a saída é reconstruída pela ordem do índice e um aviso indica que as linhas foram repostas em sequência, de maneira que uma folha ordenada alfabeticamente por texto para agrupar falas parecidas produz na mesma um ficheiro de legendas por ordem cronológica. Se algumas linhas perderam o número, ou se duas linhas partilham o mesmo, a coluna não é de confiança: a ferramenta mantém então a ordem por que as linhas aparecem e di-lo em vez de adivinhar. Apagar uma linha não tem risco: a saída é renumerada a partir de um, quaisquer que sejam os índices que restem. A importação assinala agora também uma legenda cujo fim precede o início — uma linha que vai de 00:00:09,000 a 00:00:04,000 continua a ser escrita tal e qual, mas é contada e nomeada em vez de passar em silêncio. Os tempos podem ser introduzidos em segundos em vez de códigos de tempo, o que dá jeito ao acrescentar uma legenda à mão: 5.5 e 8.2 são lidos como 00:00:05,500 e 00:00:08,200.

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á.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.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çã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.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.

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?