Verificador de timecode drop-frame e non-drop
Este verificador identifica a convenção indicada pelo separador do timecode, confirma se ela é válida para a taxa informada e converte o rótulo em uma contagem absoluta de quadros com origem zero.
Executar grátis
Ele considera os números omitidos nos formatos drop-frame derivados de NTSC, em vez de tratar todos os minutos da mesma forma. O resultado também informa taxa nominal, taxa real de reprodução, quantidade de rótulos omitidos e segundos decorridos, dados úteis para decisões de edição, validação de metadados e fluxos automatizados de mídia.
Entenda o que o timecode drop-frame realmente omite
O timecode drop-frame não remove imagens do vídeo, não encurta o programa e não altera a velocidade de reprodução. Ele apenas omite determinados números para manter o relógio exibido próximo do tempo real nas taxas fracionárias derivadas de NTSC. Em 29.97 fps, contar como se fossem exatamente 30 fps gera um desvio de aproximadamente 3.6 segundos por hora. A convenção corrige essa diferença omitindo os rótulos 00 e 01 no início de cada minuto, exceto a cada décimo minuto. Em 59.94 fps são quatro rótulos; em 119.88 fps, oito. O verificador interpreta ponto e vírgula ou ponto antes do campo de quadros como drop-frame, enquanto dois-pontos significam non-drop. A contagem corrigida subtrai rótulos que não deveriam existir, e não quadros do material, permitindo transformar uma referência legível em uma posição exata com origem zero.
Como a contagem de quadros é calculada
Primeiro, a ferramenta associa a taxa de reprodução à base nominal inteira. Por exemplo, 29.97 usa 30 rótulos por segundo nominal, enquanto 23.976 usa 24. Em seguida, valida minutos, segundos e o campo de quadros contra essa base. No modo non-drop, horas, minutos e segundos são convertidos diretamente pela taxa nominal e o quadro final é somado. No modo drop-frame, contam-se os minutos completos anteriores, exclui-se cada décimo minuto da correção e subtraem-se dois, quatro ou oito rótulos conforme a taxa. Rótulos impossíveis como 00:01:00;00 em 29.97 também são rejeitados, pois o primeiro válido naquele minuto é 00:01:00;02. Os segundos decorridos resultam da divisão da contagem corrigida pela taxa fracionária exata, como 30000/1001, e não pelo valor arredondado exibido. Isso preserva a relação entre posição e duração.
Escolha a convenção indicada pela fonte
Uma taxa fracionária não prova automaticamente que o timecode seja drop-frame. Um projeto em 29.97 ou 59.94 pode usar rótulos drop-frame ou non-drop conforme a necessidade da produção e a configuração do equipamento. Por isso, a ferramenta lê o separador final em vez de impor uma convenção: use ponto e vírgula ou ponto quando a fonte indicar drop-frame, e dois-pontos quando indicar non-drop. Taxas como 23.976, 24 e 25 não usam a correção padrão implementada aqui; portanto, pontuação drop-frame nessas taxas gera erro. Em um fluxo de mídia, mantenha juntos a taxa e o timecode completo, pois remover a pontuação pode apagar a convenção. Use a contagem retornada como posição desde zero e acrescente separadamente qualquer deslocamento inicial da fonte. Essa verificação evita que um pequeno desvio por hora cause erros visíveis de sincronização ou montagem.
Casos de uso
Validar uma lista de decisões de edição
Rejeite rótulos drop-frame impossíveis e converta timecodes válidos em posições absolutas comparáveis.
Verificar a duração de transmissão
Confirme a convenção de um programa derivado de NTSC e calcule os segundos pela contagem corrigida.
Normalizar metadados de mídia
Registre convenção, taxa nominal, reprodução exata e quadros antes da catalogação ou transcodificação.
Perguntas frequentes
O timecode drop-frame exclui quadros do vídeo?
Não. Ele omite apenas determinados rótulos numéricos; todos os quadros capturados permanecem.
Como o verificador seleciona a convenção?
Ponto e vírgula ou ponto seleciona drop-frame. Dois-pontos seleciona non-drop.
23.976 pode usar drop-frame?
Não na convenção padrão implementada aqui. Esse separador em 23.976 retorna erro de entrada.
Por que 00:01:00;00 é inválido em 29.97?
Os rótulos 00 e 01 são omitidos no início desse minuto; o primeiro válido é 00:01:00;02.
Quanto custa uma solicitação de API?
Cada solicitação de API custa US$ 0,002. A calculadora no navegador não exige uma solicitação de API.
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/video2/drop-frame-timecode-check \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"framerate":29.97,"timecode":"01:00:00;00"}'const res = await fetch("https://api.kit.forhosting.com/video2/drop-frame-timecode-check", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"framerate": 29.97,
"timecode": "01:00:00;00"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/video2/drop-frame-timecode-check",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"framerate": 29.97,
"timecode": "01:00:00;00"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/video2/drop-frame-timecode-check", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"framerate":29.97,"timecode":"01:00:00;00"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"framerate":29.97,"timecode":"01:00:00;00"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/video2/drop-frame-timecode-check", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"framerate": 29.97,
"timecode": "01:00:00;00"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "video2.drop_frame_timecode_check",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Limites
max_mb | 500 |
max_minutes | 60 |
max_megapixels | 3.9 |
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |