Converter SUB/IDX (VobSub) em SRT
A primeira execução baixa o leitor de texto — cerca de 4 MB mais o modelo de idioma, servidos por este site e em cache no navegador depois disso. Nada é enviado, e o resultado é lido por máquina: revise antes de confiar nele.
Opções
Uma legenda em bitmap é uma imagem de texto, então as palavras têm que ser lidas de volta dela. Diga ao leitor em que idioma as legendas estão escritas: a lista cobre todos os idiomas em que este site é publicado. Legendas em russo lidas com o modelo inglês saem como ruído, não como russo. Só o modelo que você escolher é baixado (os outros nunca são), então trocar custa um download por idioma, em cache depois disso.
O VobSub divide uma faixa de legendas entre dois arquivos, e os dois são necessários. O arquivo .sub guarda as imagens: uma cadeia de pacotes de programa MPEG, cada um carregando um bitmap comprimido com um código de repetição de dois bits. O arquivo .idx guarda todo o resto: a paleta de dezesseis cores, o tamanho do quadro e uma linha por legenda com a hora de início e o deslocamento em bytes dentro do .sub onde a imagem começa. Solte só o .sub e não há como saber quantas legendas existem; solte só o .idx e não há imagem para ler. Esta página pega o par e escreve um .srt.
Cada pacote é localizado por aquele deslocamento em bytes, então o índice não é uma conveniência — é o mapa. Dentro do pacote, duas palavras de cabeçalho dão o tamanho e a posição de uma sequência de controle; a sequência define a área de exibição, escolhe quais quatro entradas da paleta os pixels referenciam e aponta para o bitmap comprimido. O decodificador então percorre o código de repetição duas vezes, uma para as linhas pares e outra para as ímpares, porque o VobSub guarda os dois campos de um quadro entrelaçado separadamente. É por causa desse detalhe que um decodificador ingênuo produz uma imagem com uma linha sim, uma não.
As marcas de tempo vêm do .idx, que é o único lugar onde existem em forma utilizável. Um bloco termina onde o próximo começa; o bloco final recebe dois segundos, e a lista de perdas registra isso. Legendas cujas imagens não produzem texto legível ficam de fora e são contadas, em vez de escritas como linhas em branco.
O texto em si vem do reconhecimento de texto (OCR), o que significa que é uma leitura, não uma transcrição. É aqui que as legendas de DVD são mais difíceis: foram criadas em fontes bitmap pequenas com marcas de itálico para vozes fora de cena, e um reconhecedor não sabe que uma palavra inclinada de outro jeito é a mesma palavra. Revise o arquivo. Escolha o idioma em que as legendas estão — o modelo é escolhido por página, baixado uma vez e guardado em cache pelo navegador.
Nada é enviado. O par é analisado e reconhecido nesta aba; as únicas requisições de rede são para os arquivos do próprio reconhecedor, que este site serve.
Perguntas frequentes
Por que a conversão de .idx + .sub precisa de dois arquivos quando qualquer outra ferramenta daqui precisa de um?
Porque o VobSub guarda uma faixa em dois arquivos por desenho, não porque a ferramenta queira duas entradas. O .sub contém os bitmaps; o .idx contém a paleta de dezesseis cores, o tamanho do quadro e o deslocamento de cada imagem junto com a hora de início. Nenhum dos dois sozinho responde "quantas legendas existem e o que elas dizem". Se você tem um .sub sem .idx, esse par foi separado em algum lugar e o índice precisa ser recuperado do disco de origem antes que o OCR seja possível.
Para onde apontam os números de filepos no arquivo .idx?
Para um deslocamento em bytes dentro do arquivo .sub, no início de um pacote de programa MPEG cujo identificador de stream o marca como stream privado — o tipo que os players de DVD usam para legendas. O deslocamento não é um número de legenda, e não é necessariamente crescente junto com as marcas de tempo em um disco incomum, e é por isso que esta página ordena as entradas pelas marcas de tempo em vez de confiar na ordem das linhas no arquivo.
Por que algumas linhas saem com as letras erradas mas com o comprimento certo na conversão VobSub para SRT?
Porque a paleta e as formas vêm ambas da imagem, e o OCR resolve formas em um tamanho fixo. Legendas de DVD costumam ser criadas em uma face pequena e muito inclinada ou muito negrito; uma palavra em itálico — usada para diálogo fora de cena e para letras de música — é a vítima usual, porque uma versão inclinada de uma letra não é outra letra para uma pessoa, mas é outra forma para um reconhecedor. Se os comprimentos batem e as letras não, a solução é revisar, não trocar de ferramenta.
A posição da legenda na tela sobrevive no SRT?
Não sobrevive, e não há para onde ir. O VobSub guarda a posição como um retângulo de área de exibição em coordenadas de doze bits dentro de cada pacote, e o SRT não tem sintaxe de posicionamento nenhuma. A página usa o retângulo para saber onde está a tinta — o que ajuda o OCR a recortar corretamente — e depois o descarta. Se o seu player precisa de legendas posicionadas, o ASS é o formato que consegue carregar a informação; um SRT com marcadores de posição é uma convenção que alguns players honram e outros imprimem ao pé da letra.
A ferramenta diz que precisa do .idx — eu só tenho o .sub. Dá para reconstruir o índice?
Não a partir do .sub sozinho, e não de forma confiável a partir das imagens. Os deslocamentos podem em princípio ser encontrados varrendo pacotes de stream privado, mas as marcas de tempo não podem ser recuperadas: elas vivem no .idx e em nenhum outro lugar do par. Reconstruir um índice significa voltar ao disco ou ao arquivo VOB de onde o par foi extraído, ou usar o .idx original se ele ainda existir ao lado de outra faixa. Adivinhar tempos produziria um arquivo que parece correto e deriva contra o vídeo, o que é pior do que nenhum arquivo.
O par .idx + .sub é enviado a algum lugar durante a conversão?
Não. Os dois arquivos são lidos na memória desta aba, decodificados aqui e reconhecidos aqui. O único download é o reconhecedor de texto, servido por este site e guardado em cache pelo navegador depois. Você pode abrir o painel Network enquanto um par é processado: nenhuma requisição carrega qualquer um dos dois arquivos. Isso importa para o VobSub em particular, porque esses arquivos normalmente vêm de um disco que o usuário possui e são exatamente o tipo de material que não deveria ser entregue a um serviço de conversão.