Calculez les horodatages des miniatures vidéo
Préparez un ensemble d’aperçus propre avant de décoder la moindre image. Indiquez la durée de la vidéo et le nombre de miniatures souhaité : ce calculateur renvoie des horodatages déterministes, régulièrement espacés et exprimés en secondes.
Lancer gratuitement
Il écarte volontairement la première et la dernière seconde, où les fondus, images noires, cartons de titre et écrans de fin donnent souvent de mauvais aperçus. Le résultat peut alimenter directement une commande d’extraction, un pipeline multimédia, un générateur de storyboard ou la chronologie d’un lecteur.
Choisissez des points représentatifs loin des extrémités
Une série de miniatures utile doit résumer la vidéo, et non simplement découper sa durée brute. Le tout premier instant contient souvent une image noire, un fondu d’ouverture, un carton de chargement ou une image clé incomplète. À l’autre extrémité, on rencontre fréquemment un fondu, un générique, un écran final, voire aucune image décodable à la limite exacte de durée. Ce calculateur retire ces zones peu fiables en définissant une fenêtre exploitable entre une seconde après le début et une seconde avant la fin. Pour deux horodatages ou plus, il place le premier au début de cette fenêtre sûre, le dernier à sa fin, puis répartit tous les autres à intervalles égaux. Pour un seul horodatage, il renvoie le milieu de la vidéo. Ce comportement clair est reproductible : une durée et un nombre identiques produisent toujours le même programme. Vous pouvez donc transmettre directement ces secondes à un processus d’extraction sans réécrire la logique d’espacement ni demander par erreur la limite inaccessible du fichier multimédia.
Comprenez le calcul et ses limites
L’entrée est exprimée en secondes et accepte les durées fractionnaires, ce qui compte puisque les métadonnées multimédias tombent rarement sur une seconde entière. Pour plusieurs miniatures, l’intervalle correspond à la durée exploitable —durée totale moins deux secondes— divisée par le nombre demandé moins un. Chaque horodatage est obtenu en ajoutant au premier instant sûr cet intervalle multiplié par sa position à partir de zéro. Les résultats comportent au maximum six décimales afin de stabiliser la sortie JSON tout en conservant une précision inférieure à la seconde. La durée doit dépasser deux secondes, car un extrait plus court ne laisse aucun intervalle excluant les deux bords. Le nombre doit être un entier au moins égal à un ; zéro ou une valeur négative ne définit aucun programme valable et provoque une erreur de saisie. Les plafonds évitent les tableaux inutilement volumineux. Cet outil calcule uniquement des positions : il n’analyse pas les images, ne détecte pas les scènes et ne garantit pas la précision de recherche du décodeur.
Intégrez les horodatages à votre flux de miniatures
Commencez par la durée de référence fournie par votre sonde multimédia, les métadonnées du lecteur ou votre service d’envoi. Choisissez un nombre adapté à la destination : un petit aperçu au survol peut demander quelques images, tandis qu’un storyboard long peut en nécessiter plusieurs dizaines. Envoyez ces valeurs au calculateur et conservez l’ordre renvoyé lors de l’extraction. La plupart des outils vidéo acceptent les secondes ou savent les convertir dans leur propre notation temporelle. Ce programme régulier convient aussi aux clés de cache déterministes et aux tâches relançables : en cas de nouvelle tentative, les mêmes positions seront demandées. La précision réelle dépend toutefois de l’extracteur. Certains modes rapides sautent vers une image clé voisine, alors que les modes précis décodent jusqu’au temps demandé. Pour une sélection guidée par le contenu, utilisez la détection de scènes. Pour couvrir la chronologie de façon prévisible, préparer des lots, créer des tests ou produire des bandes d’aperçu, ces horodatages offrent un contrat transparent et facile à reproduire.
Cas d’usage
Créez une bande d’aperçu
Produisez des positions prévisibles pour les images affichées lorsque la personne parcourt la chronologie vidéo.
Préparez un storyboard
Composez une planche-contact uniformément échantillonnée sans images noires d’ouverture ni écrans de fin.
Planifiez une extraction par lots
Transmettez une liste stable d’horodatages à une tâche FFmpeg, un worker multimédia ou un pipeline d’envoi.
Questions fréquentes
Quel est le tarif ?
Chaque requête API coûte $0.002. Vous pouvez également utiliser le calculateur dans votre navigateur.
Pourquoi exclure la première et la dernière seconde ?
Ces zones contiennent souvent des fondus, images noires, titres, génériques ou une limite indécodable, et produisent donc de mauvais aperçus.
Que se passe-t-il si vous demandez une seule miniature ?
Le calculateur renvoie le milieu de la vidéo, toujours situé dans la fenêtre sûre pour une durée acceptée.
Cet outil extrait-il les images ?
Non. Il renvoie uniquement les horodatages ; utilisez-les avec un décodeur vidéo ou un extracteur d’images.
Les fractions de seconde sont-elles acceptées ?
Oui. La durée et les horodatages peuvent être fractionnaires, avec un arrondi à six décimales au maximum.
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/thumbnail-timestamps \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"duration_seconds":120,"count":5}'const res = await fetch("https://api.kit.forhosting.com/video/thumbnail-timestamps", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"duration_seconds": 120,
"count": 5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/video/thumbnail-timestamps",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"duration_seconds": 120,
"count": 5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/video/thumbnail-timestamps", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"duration_seconds":120,"count":5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"duration_seconds":120,"count":5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/video/thumbnail-timestamps", 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
{
"duration_seconds": 120,
"count": 5
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "video.thumbnail_timestamps",
"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_items | 10000 |
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. |