Comprobar timecode drop-frame y non-drop
Este comprobador identifica la convención indicada por el separador del timecode, verifica si es válida para la frecuencia suministrada y convierte la etiqueta en un recuento absoluto de fotogramas con origen cero.
Ejecutar — gratis
Tiene en cuenta las etiquetas omitidas por los formatos drop-frame derivados de NTSC, en vez de tratar todos los minutos igual. El resultado incluye la frecuencia nominal, la frecuencia real de reproducción, las etiquetas omitidas y los segundos transcurridos, datos útiles para edición, validación de metadatos y procesos audiovisuales automatizados.
Qué omite realmente el timecode drop-frame
El timecode drop-frame no elimina imágenes de vídeo, no acorta el programa ni modifica su velocidad. Solo omite determinados números de fotograma para que el reloj mostrado se mantenga cerca del tiempo real en frecuencias fraccionarias derivadas de NTSC. A 29.97 fps, contar como si fueran exactamente 30 fps produce una desviación aproximada de 3.6 segundos por hora. La convención corrige esa diferencia omitiendo las etiquetas 00 y 01 al comenzar cada minuto, excepto cada décimo minuto. A 59.94 fps omite cuatro etiquetas y a 119.88 fps, ocho. Este comprobador interpreta un punto y coma o un punto antes del campo de fotogramas como drop-frame; los dos puntos indican non-drop. El recuento corregido resta etiquetas inexistentes, no fotogramas del material, y por ello permite convertir una referencia legible en una posición precisa con origen cero.
Cómo se calcula el recuento de fotogramas
Primero se asocia la frecuencia de reproducción a su base nominal entera. Por ejemplo, 29.97 utiliza 30 etiquetas por segundo nominal y 23.976 utiliza 24. Después se validan minutos, segundos y fotogramas frente a esa base. En non-drop, horas, minutos y segundos se convierten directamente a la frecuencia nominal y se suma el campo final. En drop-frame, se cuentan todos los minutos completos anteriores, se excluye cada décimo minuto de la corrección y se restan dos, cuatro u ocho etiquetas según la frecuencia. También se rechazan etiquetas imposibles como 00:01:00;00 a 29.97, pues la primera válida de ese minuto es 00:01:00;02. Los segundos transcurridos se obtienen dividiendo el recuento corregido por la frecuencia fraccionaria exacta, como 30000/1001, y no por el valor redondeado mostrado. Así se conserva la relación práctica entre posición y duración.
Elija la convención según la fuente
Una frecuencia fraccionaria no demuestra por sí sola que el timecode sea drop-frame. Un proyecto a 29.97 o 59.94 puede usar etiquetas drop-frame o non-drop según las exigencias de producción y la configuración del equipo. Por eso la herramienta lee el separador final en vez de imponer una convención: utilice punto y coma o punto cuando la fuente especifique drop-frame, y dos puntos para non-drop. Frecuencias como 23.976, 24 y 25 no usan aquí la corrección estándar de etiquetas, por lo que una puntuación drop-frame genera un error. En un proceso audiovisual, conserve juntos la frecuencia y el timecode completo; eliminar la puntuación puede borrar la convención. Use el recuento devuelto como posición desde cero y añada aparte cualquier desplazamiento inicial de la fuente. Esta comprobación evita que una pequeña deriva horaria se convierta en errores visibles de sincronización o montaje.
Qué puede hacer con ella
Validar una lista de decisiones de edición
Rechace etiquetas drop-frame imposibles y convierta referencias válidas en posiciones absolutas comparables.
Comprobar la duración de emisión
Confirme la convención de un programa derivado de NTSC y calcule los segundos desde el recuento corregido.
Normalizar metadatos audiovisuales
Registre convención, frecuencia nominal, reproducción exacta y fotogramas antes de catalogar o transcodificar.
Preguntas frecuentes
¿El timecode drop-frame elimina fotogramas?
No. Solo omite ciertas etiquetas numéricas; todos los fotogramas capturados permanecen.
¿Cómo selecciona la herramienta la convención?
Un punto y coma o punto selecciona drop-frame. Los dos puntos seleccionan non-drop.
¿Puede 23.976 usar drop-frame?
No con la convención estándar implementada aquí. Ese separador a 23.976 devuelve un error de entrada.
¿Por qué no es válido 00:01:00;00 a 29.97?
Se omiten las etiquetas 00 y 01 al inicio de ese minuto; la primera válida es 00:01:00;02.
¿Cuánto cuesta una petición de API?
Cada petición de API cuesta $0.002. La calculadora del navegador no requiere una petición de API.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
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)Ejemplo de solicitud
{
"framerate": 29.97,
"timecode": "01:00:00;00"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "video2.drop_frame_timecode_check",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_mb | 500 |
max_minutes | 60 |
max_megapixels | 3.9 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |