Vídeo e legendas · Kit de ferramentas de legendas
Timecodes de legenda comparados: SRT vírgulas, VTT pontos e SMPTE quadros
· Fundo
legendas códigos de tempo taxa de quadros
Três maneiras de escrever o tempo aparecem no trabalho de legenda: HH:MM:SS,mmm de SRT, HH:MM:SS.mmm de WebVTT e HH:MM:SS:FF de SMPTE. Esta postagem explica o que cada um significa, como eles convertem e onde as conversões dão errado.
O mesmo momento escrito de três maneiras - um rápido tour pelos códigos de tempo que um editor encontra em um projeto
Um projeto pode entregar a um editor o mesmo instante escrito de três maneiras. O arquivo de legenda usa horas, minutos, segundos e uma vírgula antes dos milissegundos. O arquivo de legenda da web usa um ponto na mesma posição. A lista de decisões de edição utiliza um número de quadro em vez de uma fração. Todos os três nomeiam o mesmo momento, e apenas um deles pode ser lido sem saber mais nada sobre o material.
Esse último ponto é o que importa. Duas dessas notações são absolutas e uma não, e as conversões entre elas falham de uma maneira específica quando a diferença é ignorada.
Milissegundos com vírgula: SRT — um hábito decimal europeu que se tornou uma regra de formatação
SRT escreve horas, minutos, segundos, uma vírgula e exatamente três dígitos de milissegundos. A vírgula é um separador decimal na convenção europeia e tornou-se uma regra de formato por uso e não por especificação, uma vez que a SubRip não tinha nenhum documento padrão para corrigi-la. Nada no valor é europeu; apenas a pontuação é.
O analisador aqui lê milissegundos preenchendo todos os dígitos que encontrar à direita para três, de modo que um carimbo de data/hora que termine em um único dígito é lido como centenas de milissegundos em vez de unidades. Isso é importante porque os arquivos escritos à mão ou por um conversor solto nem sempre fornecem três dígitos, e a leitura de um único dígito final como unidades colocaria a sugestão quase um segundo antes.
Milissegundos com ponto: WebVTT — o mesmo valor, separador diferente e por que isso é importante para os analisadores
WebVTT escreve o mesmo valor com um ponto e permite que o campo horas seja totalmente omitido, portanto, um formulário de dois campos é válido onde SRT espera três. Para um analisador, essas são gramáticas genuinamente diferentes, e é por isso que um arquivo pode ser rejeitado apenas pela pontuação, apesar de todos os números nele contidos estarem corretos.
Arquivos reais misturam os dois constantemente, de modo que o analisador aceita qualquer um dos separadores, independentemente do formato que o arquivo afirma ter. Essa tolerância ocorre apenas na entrada. Na saída, o separador é escolhido pelo formato de destino, uma vírgula para SRT e um ponto para WebVTT, portanto, um arquivo convertido é canônico e não uma cópia de qualquer irregularidade que tenha chegado.
Quadros: SMPTE timecode — HH:MM:SS:FF, sua dependência da taxa de quadros e a complicação de queda de quadro
SMPTE timecode substitui a parte fracionária por um número de quadro, fornecendo horas, minutos, segundos e quadros. Ao contrário dos outros dois, não pode ser interpretado sozinho: o quadro doze é um instante diferente a vinte e cinco quadros por segundo e a trinta, portanto, um código de tempo baseado em quadros sem uma taxa declarada é incompleto e não meramente ambíguo.
Drop-frame adiciona uma segunda complicação. O material com 29.97 quadros por segundo é contado como se fosse trinta e, para manter a contagem alinhada com o relógio, dois números de quadros são ignorados no início da maioria dos minutos, com cada décimo minuto isento. Os quadros não são descartados; apenas os rótulos são. Um timecode drop-frame é uma convenção de contagem, e tratá-lo como uma contagem simples de quadros produz um erro que aumenta ao longo do programa.
Convertendo frames em milissegundos – a aritmética e o arredondamento que produzem erros pequenos, mas reais
A conversão de quadros para milissegundos é uma divisão pela taxa de quadros, e o arredondamento é onde entram os pequenos erros. Um índice de quadros dividido pela taxa e multiplicado por mil raramente chega a um milissegundo inteiro, e o resultado precisa ser arredondado para ser armazenado. As dicas internas são mantidas como milissegundos inteiros contados a partir de zero, portanto, cada conversão nessa representação é arredondada uma vez.
Um arredondamento é inofensivo. O erro a ser observado é a conversão repetida: um arquivo retirado de quadros para milissegundos, de volta aos quadros em uma taxa diferente e avançando novamente, acumula um arredondamento a cada vez, e esses erros não são cancelados. Converta uma vez da fonte oficial em vez de passar um arquivo por várias ferramentas.
Exemplo resolvido: uma sugestão em 25 fps e em 29.97 drop-frame - convertendo ambos para milissegundos e comparando
Tome uma sugestão em um minuto, trinta segundos e doze quadros. A vinte e cinco quadros por segundo, doze quadros equivalem a doze vinte e cinco quintos de segundo, o que equivale exatamente a quatrocentos e oitenta milissegundos, então o instante é noventa mil quatrocentos e oitenta milissegundos.
No drop-frame 29.97 o mesmo rótulo é um instante diferente. Conte os quadros: noventa segundos no valor nominal de trinta dá dois mil setecentos, mais doze, menos os dois rótulos descartados no primeiro minuto, que são dois mil setecentos e dez quadros. Divida pela taxa real de trinta mil por mil e um e o instante será cerca de noventa mil quatrocentos e vinte e quatro milissegundos. Os dois códigos de tempo parecem quase idênticos e diferem em aproximadamente cinquenta e seis milissegundos, o que é pequeno o suficiente para sobreviver à revisão e grande o suficiente para ser visível em uma pista precisa.
O que isso não cobre: horas além de 99, horários negativos e código de tempo nos metadados do contêiner
Isso abrange as notações de timecode que um arquivo de legenda carrega. Não cobre campos de horas além de noventa e nove, que alguns sistemas usam para identificação de bobinas em vez de tempo decorrido, e não cobre tempos negativos, que nenhum formato de legenda pode expressar; uma mudança que produziria um é fixada em zero.
O timecode armazenado nos metadados do contêiner também está fora do escopo. Um arquivo de vídeo pode conter um código de tempo de início que compensa tudo dentro dele, portanto, um arquivo de legenda que está correto em relação ao programa pode parecer errado em relação ao arquivo, e nenhum exame dos carimbos de data e hora da legenda revelará isso.
Conclusão: saiba qual relógio você está lendo - como o Subtitle Toolkit converte exatamente entre os códigos de tempo SRT e WebVTT
Saiba qual relógio você está lendo. Uma vírgula e um ponto têm o mesmo valor escrito para analisadores diferentes, e a conversão entre eles deve alterar a pontuação e nada mais. Uma contagem de quadros é um tipo diferente de número, sem sentido sem sua taxa e enganosa quando a taxa é de queda de quadros.
Converta entre SRT e WebVTT com o kit de ferramentas e compare um carimbo de data/hora antes e depois: o separador deve mudar e os dígitos não. Se um número foi movido, o arquivo passou por uma etapa baseada em quadro em algum lugar, e essa é a conversão a ser examinada.