Converter JSON para MicroDVD
Ou cole o texto da legenda
Opções
A taxa de quadros em que os tempos são contados. Nas páginas de formato é o que o MicroDVD precisa, porque ele guarda os tempos como números de quadro. Nas páginas de taxa de quadros é a taxa com que o arquivo foi cronometrado — a versão para a qual as legendas foram feitas — e a segunda caixa da página recebe a taxa do vídeo com que você vai usá-las. 23,976, 24, 25, 29,97, 30, 50, 59,94 e 60 são as comuns. Errar isso desloca toda a linha do tempo e, nas páginas de taxa de quadros, desloca por uma proporção em vez de por uma quantidade fixa.
O que esta conversão altera
4 coisas são descartadas ou precisam de uma decisão
- Estilo
todo o estilo (negrito, itálico, cor, contorno, sombra)
- Posição
a posição na tela (cada bloco volta à posição padrão)
- Karaokê
a sincronização karaokê (destaque por sílaba)
- Taxa de quadros
este formato guarda os tempos como números de quadro — os tempos dependem da taxa de quadros que você informar
Esta lista vem da matriz de capacidades destes dois formatos, não do arquivo específico que você carregou. Um arquivo específico pode perder mais se usar recursos que o formato permite mas a matriz não modela.
Esta página converte JSON em MICRODVD. Arraste um arquivo — ou cole o texto — e receba a versão MICRODVD de volta. A conversão roda inteiramente no seu navegador, então nada é enviado e nenhuma conta é necessária.
Estes dois formatos não guardam as mesmas coisas, e a diferença não é cosmética: estilo, posicionamento, karaokê e taxa de quadros não têm para onde ir no MICRODVD. A lista acima vem do que cada um dos formatos consegue expressar, não do seu arquivo, então a resposta é a mesma antes de você carregar qualquer coisa.
Um arquivo está bom, e uma temporada inteira também: a fila processa na ordem e os resultados descem juntos num único ZIP.
Exemplos
Um arquivo JSON típico, convertido para MICRODVD
Entrada
{
"version": 1,
"title": "Fixture: typical",
"fps": 25,
"styles": {
"Default": {
"name": "Default",
"fontFamily": "Arial",
"fontSize": 20,
"primaryColor": "#FFFFFF",
"bold": false,
"italic": false
}
},
"generator": "subtitlematrix fixtures",
"cues": [
{
"id": "1",
"start": 0,
"end": 2000,
"lines": [
"Hello world.",
"Second line."
],
"style": "Default",
"position": {
"x": 100,
"y": 200,
"align": "center"
}
},
{
"id": "2",
"start": 2500,
"end": 4000,
"lines": [
"Plain line.",
{
"text": "Styled line.",
"tags": [
{
"kind": "italic",
"start": 0,
"end": 6
}
]
}
]
},
{
"id": "3",
"start": 4500,
"end": 6000,
"lines": [
"Roger: I am here."
],
"speaker": "Roger"
}
]
}
Saída
{1}{1}25
{0}{50}Hello world.|Second line.
{63}{100}Plain line.|Styled line.
{113}{150}Roger: I am here.
Perdidos nesta saída: estilo, posicionamento, karaokê e taxa de quadros. Todo o resto corresponde linha a linha.
A mesma conversão sobre uma entrada problemática
Entrada
[
{ "start": 0, "end": 1000, "lines": ["First."] },
{ "start": 1000, "end": 2000, "text": "Second." },
"not an object",
{ "start": 2000, "end": 3000, "lines": ["Third."], "class": "top" }
]
Saída
{1}{1}25
{0}{25}First.
{25}{50}Second.
{50}{75}Third.
É o tipo de dano que os arquivos reais têm: fim de linha misturado, espaço sobrando, campos vazios. Compare com o exemplo organizado acima para ver o que o analisador perdoa.
Perguntas frequentes
O que acontece com negrito, itálico e cor do JSON para o MICRODVD?
O MICRODVD não guarda estilo de nenhum tipo, então tudo se perde: as tags que a linha de um bloco carrega e as entradas do objeto styles do documento não encontram lugar, e cada linha sai como texto puro. As palavras em si permanecem iguais.
O que acontece com a posição na tela do JSON para o MICRODVD?
O MICRODVD não diz onde a legenda é desenhada, então a posição guardada em cada bloco é descartada na saída do JSON e todos os blocos voltam para a posição padrão que o player escolhe — normalmente a base do quadro, centralizada.
O que acontece com o karaokê do JSON para o MICRODVD?
O tempo se perde e as palavras ficam. O karaokê está nos trechos marcados que o bloco JSON carrega, indicando o instante em que cada sílaba acende; o MICRODVD não registra momentos dentro de uma linha, então as marcas saem e as sílabas chegam como texto comum.
Qual taxa de quadros devo escolher para a conversão de JSON para MICRODVD?
O MICRODVD guarda cada legenda como um par de números de quadro, e não como horário — por exemplo, {103}{175} — então a taxa é o que converte os tempos do JSON no que o arquivo precisa: a 25 quadros por segundo, quatro segundos são o quadro 100. Use a taxa do vídeo a que estas legendas se destinam; um valor errado quase não aparece no começo e sai cada vez mais de sincronia conforme o vídeo avança.
Como fica a saída quando JSON vira MICRODVD?
Fica no formato MICRODVD: sem números de bloco, um par de números de quadro entre chaves abre cada linha, e a primeira linha do arquivo declara a taxa usada. Cada bloco JSON vira uma linha MICRODVD, na mesma ordem, com o mesmo texto.
As duas linhas de um bloco JSON sobrevivem no MICRODVD?
Sobrevivem numa única linha, com uma barra vertical separando as metades, que é como o MicroDVD escreve uma quebra. O vínculo se mantém: as duas linhas do JSON continuam sendo uma legenda só no MICRODVD, e o player as mostra juntas.
A ordem dos blocos JSON se mantém no MICRODVD?
Se mantém, com a ordenação pelo início feita no caminho, do mais cedo para o mais tarde, como os players leem. Se o JSON listava os blocos fora de ordem, o MICRODVD os devolve em ordem; a mudança é estrutural, não de conteúdo, e é proposital.
Consigo converter o MICRODVD de volta para JSON?
Consigo, e essa direção tem lista própria: converter MICRODVD para JSON descarta a taxa de quadros, porque o JSON guarda milissegundos e o MICRODVD guarda quadros. Sem a taxa, os números de quadro não voltam a ser tempos. A lista difere da de cima porque os formatos guardam coisas diferentes.
O MICRODVD de saída mantém a codificação do arquivo JSON?
Não: a saída é UTF-8, com fim de linha Unix e sem BOM, qualquer que tenha sido a codificação do JSON. Arquivos em UTF-16 ou em codificação de byte único do Windows são decodificados na entrada, e o painel de resultado avisa quando isso ocorre.