Convertir le timecode en frames
Passez du timecode au numéro d’image et inversement : 00:01:00:00 à 30 images par seconde correspond à l’image 1800, comptée depuis zéro, pour que coupes, repères et sous-titres tombent pile au bon endroit. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Direction
- To frames
- Images par seconde
- 30
- Timecode
- 00:01:00:00
- Images
- 1 800
- Heures
- 0
- Minutes
- 1
- Secondes
- 0
Les monteurs, étalonneurs, opérateurs de contrôle qualité et ingénieurs de pipeline passent sans cesse du timecode lisible de style SMPTE aux compteurs entiers d'images que les NLE, fermes de rendu et outils de sous-titres indexent réellement.
Comment le timecode non-drop se mappe sur le nombre total d'images
Le timecode non-drop de style SMPTE étiquette chaque image avec des heures, des minutes, des secondes et un chiffre d'image dans la seconde courante. À un framerate entier constant fps, chaque seconde complète apporte exactement fps images, chaque minute soixante secondes et chaque heure trois mille six cents secondes. La conversion multiplie donc la partie horloge de l'étiquette par fps et ajoute le chiffre d'image : frames égale ((heures fois trois mille six cents plus minutes fois soixante plus secondes) fois fps) plus FF.
Le comptage base zéro commence à 00:00:00:00 comme image zéro, de sorte que 00:00:01:00 à trente images par seconde est l'image trente, et 00:01:00:00 à trente fps est l'image mille huit cents. Le chemin inverse décompose avec division entière et reste : FF est frames modulo fps ; puis les secondes entières restantes sont réparties en heures, minutes et secondes selon l'horloge habituelle en base soixante.
Ce point de terminaison n'implémente que cette arithmétique non-drop ; il n'applique pas les règles de saut drop-frame NTSC pour vingt-neuf virgule neuf sept, car ces règles changent l'étiquette sans modifier de la même façon la formule sous-jacente du comptage. Choisissez le fps entier qui correspond à votre projet (vingt-quatre, vingt-cinq, trente, quarante-huit, cinquante, soixante et similaires) et gardez des étiquettes cohérentes sur tous les outils qui lisent le même média.
Là où la précision à l’image fait la différence
Les assistants de montage traduisent souvent des feuilles de cues et des notes de production en HH:MM:SS:FF vers des numéros d'images pour des marqueurs, tandis que les ingénieurs font l'inverse lorsqu'ils journalisent des plages de rendu pour une ferme qui ne comprend que des entiers. Les pipelines de sous-titres convertissent les points d'entrée et de sortie pour que les cues SRT ou VTT tombent sur des images légales du fps de livraison.
Les scripts de contrôle qualité peuvent rejeter des valeurs FF illégales avant qu'un package ne quitte l'installation, capturant une erreur de collage courante qui passerait un validateur purement textuel. Les LMS et laboratoires d'écoles de cinéma utilisent le chemin gratuit du navigateur pour que les étudiants s'entraînent à l'arithmétique non-drop sans installer des calculatrices de bureau qui divergent sur le comptage base zéro.
Cas d’usage
Feuilles de cues de montage vers marqueurs d'images
Convertissez des notes de producteur en HH:MM:SS:FF en numéros totaux d'images pour marqueurs, plages et jobs de rendu au fps déclaré du projet.
Validation des sous-titres et contrôle qualité
Rejetez les chiffres d'image illégaux (FF ≥ fps) avant l'emballage et reconstruisez un timecode rembourré à partir des points d'entrée et de sortie entiers des outils d'export.
Questions fréquentes
Comment reconvertir un compteur d'images en timecode ?
La réponse reconstruit HH:MM:SS:FF avec zéros à gauche et les composants heure, minute, seconde et image.
Que se passe-t-il si le chiffre d'image dépasse le framerate ?
FF doit satisfaire 0 ≤ FF < framerate ; par exemple 00:00:01:30 est illégal à 24 fps. L'entrée invalide n'est pas facturée.
S'agit-il de drop-frame ou de non-drop ?
Non-drop uniquement. Les points-virgules dans la chaîne d'entrée sont acceptés comme séparateurs, mais aucune table de saut drop-frame NTSC n'est appliquée. Utilisez le fps entier de votre projet.
Combien d’images compte une minute à 30 images par seconde ?
Une minute compte 1800 images. Le décompte commence à 00:00:00:00, image zéro : 00:00:01:00 est donc l’image 30 et 00:01:00:00 l’image 1800 à cette cadence.
Quelles cadences d’images puis-je utiliser ?
Tout nombre entier de 1 à 240 images par seconde, par exemple 24, 25, 30, 48, 50 ou 60. Choisissez la cadence de votre projet et gardez la même dans chaque outil qui lit ces images.
Outils associés
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/video/timecode-convert-frames \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"direction":"to_frames","framerate":30,"timecode":"00:01:00:00"}'const res = await fetch("https://api.kit.forhosting.com/video/timecode-convert-frames", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"direction": "to_frames",
"framerate": 30,
"timecode": "00:01:00:00"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/video/timecode-convert-frames",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"direction": "to_frames",
"framerate": 30,
"timecode": "00:01:00:00"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/video/timecode-convert-frames", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"direction":"to_frames","framerate":30,"timecode":"00:01:00:00"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"direction":"to_frames","framerate":30,"timecode":"00:01:00:00"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/video/timecode-convert-frames", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"direction": "to_frames",
"framerate": 30,
"timecode": "00:01:00:00"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "video.timecode_convert_frames",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Limites
max_mb | 500 |
max_minutes | 60 |
max_megapixels | 3.9 |
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
Notes techniques
Une erreur d'un frame sur le chiffre FF ou un décalage de framerate peut placer une coupe sur la mauvaise image, casser un EDL ou décaler une légende d'une seconde entière. Ce convertisseur accepte une chaîne non-drop HH:MM:SS:FF plus un framerate entier de projet et renvoie le numéro total d'images depuis zéro, ou prend un compteur total et reconstruit un timecode complété de zéros. Lorsque le chiffre d'image FF est supérieur ou égal au framerate, la requête échoue avec invalid_input au lieu d'enrouler la valeur en silence.
Contrat d'entrée, règles de validation et champs de réponse
Le framerate doit être un entier de un à deux cent quarante images par seconde. Les heures peuvent aller de zéro à neuf mille neuf cent quatre-vingt-dix-neuf ; minutes et secondes doivent se situer entre zéro et cinquante-neuf. La règle éditoriale critique s'applique au chiffre d'image : FF doit satisfaire zéro inférieur ou égal à FF et FF strictement inférieur au framerate. L'inverse avec frames mille huit cents et le même fps reconstruit 00:01:00:00. Envoyez en POST un corps JSON avec direction, framerate et timecode ou frames. La direction to_frames (alias frames, tc_to_frames) exige une chaîne de timecode HH:MM:SS:FF ; les deux-points ou points-virgules sont acceptés comme séparateurs, mais le calcul est toujours non-drop. La direction to_timecode (alias timecode, frames_to_tc) exige un champ frames entier non négatif. Si quelqu'un colle 00:00:01:30 alors que le projet est à vingt-quatre fps, le gestionnaire rejette l'appel avec invalid_input et un message indiquant que le numéro d'image du timecode dépasse le framerate ; ces échecs ne sont pas facturés. En cas de succès le corps renvoie direction et framerate, un timecode normalisé rembourré de zéros, l'entier total de frames, les composants décomposés heures, minutes, secondes et image, et une courte chaîne de formule qui réaffirme l'identité non-drop. Exemple : direction to_frames, framerate trente, timecode 00:01:00:00 produit frames mille huit cents. Le gestionnaire accepte des alias de champs optionnels (fps, tc, total_frames, mode) afin que les scripts utilisent des noms familiers sans couche de mappage.
Où une API de timecode à l'image près apporte de la valeur
Comme l'implémentation est pure parse de niveau A, chaque appel réussi coûte le prix de base publié $0.002 sans jetons de modèle et sans réseau sortant, et une validation échouée ne consomme pas le solde.
Cas d'intégration
Salle de classe et tests unitaires de pipeline
Offrez aux étudiants et jobs CI un oracle non-drop déterministe qui correspond à l'image zéro en 00:00:00:00 dans le navigateur et l'API.
Questions techniques
Comment convertir HH:MM:SS:FF en un nombre total d'images ?
Envoyez direction to_frames, un framerate entier (fps) et un timecode tel que 00:01:00:00. L'API renvoie frames = ((H×3600+M×60+S)×fps)+FF avec un timecode normalisé rembourré.
Combien coûte le convertisseur de timecode en numéro d'image ?
L'outil navigateur est gratuit. Les requêtes API utilisent le solde prépayé KIT à $0.002 par appel réussi ; l'entrée invalide n'est pas facturée.