Dicionário

O que é time base?

Se você encontrou um valor para Time Base em seu arquivo, certamente quer saber o que isso significa. Confira as informações que reunimos sobre os metadados de Time Base.

time-base

Time Base é a unidade de tempo em que um stream conta. Em vez de armazenar timestamps em segundos, um arquivo de mídia conta em “ticks” do seu próprio relógio, e o time base indica quanto tempo dura cada tick. Ele é escrito como uma fração de segundo.

Quais arquivos o contêm e de onde vem o valor

Você encontra um time base nos streams individuais dentro de arquivos de mídia: a imagem, o som e quaisquer legendas em streams MP4, MOV, MKV, WebM, AVI e MPEG transport, assim como em arquivos de áudio isolados. Cada stream tem o seu próprio time base, então o áudio e o vídeo de um mesmo arquivo normalmente contam em unidades diferentes.

O valor é escolhido pelo codificador ou pelo programa que montou o arquivo. Alguns formatos de contêiner exigem um time base específico e o fixam diretamente; quando o formato deixa essa escolha em aberto, o programa que grava escolhe algo adequado ao conteúdo, e um arquivo pode simplesmente usar o padrão desse programa.

Como é o valor

Ele é sempre uma fração, e o número de baixo é o número de ticks por segundo:

  • 1/1000 - um milissegundo por tick, a escolha usual em arquivos Matroska e WebM
  • 1/90000 - usado há muito tempo em streams MPEG transport
  • 1/48000 - streams de áudio geralmente contam em amostras, então o time base corresponde à taxa de amostragem
  • 1/12800 - um valor comum em streams de vídeo em arquivos MP4

Para transformar um timestamp em segundos, multiplique-o pela fração. Um timestamp de apresentação de 12800 em um stream com time base de 1/12800 está exatamente em um segundo; com um time base de 1/1000, um timestamp de 3500 está em três segundos e meio. Por isso os timestamps brutos em um relatório parecem números enormes: eles são contagens de ticks, não segundos. Ferramentas mais antigas também podem mostrar uma linha separada de Codec Time Base junto desta.

Por que isso é importante

Tudo em um arquivo de mídia acontece em um número inteiro de ticks, então o time base define a precisão máxima de tempo que o stream pode expressar. Se um quadro ou uma amostra cair entre dois ticks, seu timestamp precisa ser arredondado, e os erros de arredondamento se acumulam.

Isso é um problema real em taxas de quadros de vídeo que não são números inteiros. Na taxa de transmissão de 30000 quadros por 1001 segundos, cada quadro dura um pouco mais de 33 milissegundos, mas não um número inteiro de milissegundos, então um time base em milissegundos não consegue posicionar nenhum quadro exatamente. Um time base com mais ticks por segundo, isto é, um número maior embaixo da fração, consegue cair exatamente em cada limite de quadro. Por isso codificadores preferem valores como 1/12800 ou 1/90000 em vez de milissegundos exatos.

As consequências aparecem como falhas de temporização, e não como algo visível em um único quadro: áudio saindo lentamente de sincronia com a imagem, espaçamento irregular entre quadros, um corte ou busca que cai ligeiramente fora do ponto. Unir arquivos cujos streams contam em time bases diferentes significa que todos os timestamps precisam ser reescalados, e essa conversão é uma fonte clássica de erros de sincronização. Esse campo, por si só, não afeta a qualidade da imagem ou do som e não contém informações pessoais.