Calcul des bandes letterbox en pixels pour vidéo
Ce calculateur de bandes letterbox transforme deux rapports d’aspect et la hauteur du canevas en mesures directement utilisables pour vos compositions vidéo.
Lancer gratuitement
Saisissez le format de la source, celui du canevas cible et sa hauteur. Le résultat précise si les bandes se placent en haut et en bas ou à gauche et à droite, puis indique la taille de chaque bande identique. Si les deux formats coïncident, il renvoie correctement zéro, car l’image remplit déjà le canevas sans recadrage ni marge.
Commencez par les formats de la source et du canevas
Un rapport d’aspect exprime la largeur par rapport à la hauteur : 16:9 et 1.777777 décrivent donc la même forme. Indiquez le format de l’image que vous souhaitez préserver, puis celui du canevas final. La hauteur du canevas fixe l’échelle réelle en pixels et sa largeur est déduite du format cible. Le calculateur accepte W:H, W/H ou un nombre décimal positif, notamment 4:3, 16:9, 21:9 et 2.39:1. Lorsque vous connaissez l’ouverture d’affichage exacte, utilisez-la plutôt qu’une appellation commerciale approximative. Certains formats couramment désignés par 21:9 ont, par exemple, des valeurs légèrement différentes ; à haute résolution, cet écart peut produire des bandes visibles. Toutes les dimensions doivent être positives et finies, et la hauteur du canevas doit être un nombre entier de pixels. Si les deux rapports sont égaux, aucune marge n’est requise : toutes les dimensions de bande valent zéro, sans erreur.
Distinguez les bandes horizontales des bandes latérales
La source est entièrement ajustée au canevas, sans déformation ni suppression de contenu. Lorsqu’elle est plus large que le canevas cible, sa largeur atteint d’abord les bords. Sa hauteur ajustée devient alors inférieure à celle du canevas, et l’espace libre est partagé également au-dessus et au-dessous de l’image. Le résultat nomme cette orientation top_bottom et fournit la hauteur de chaque bande. Si la source est plus étroite, sa hauteur atteint d’abord les limites et il reste de l’espace horizontal. Celui-ci est réparti entre la gauche et la droite, ce qui donne l’orientation left_right et la largeur de chaque bande latérale. Ce cas est souvent appelé pillarbox, mais les deux situations utilisent le même calcul d’ajustement. Le champ bar_size_pixels contient toujours la taille d’une seule bande, et non la marge cumulée. Les champs propres à chaque bord rendent le résultat immédiatement exploitable par un code de mise en page.
Exploitez le résultat au montage et au rendu
Utilisez les dimensions obtenues pour préparer des incrustations, des images d’aperçu, des masters encodés, des projections ou des compositions CSS et canvas. Lorsque la géométrie ne tombe pas sur des pixels entiers, le calculateur conserve une valeur fractionnaire, arrondie de façon déterministe à six décimales. Un outil exigeant des coordonnées entières doit appliquer sa propre règle, car arrondir séparément les deux bandes peut modifier la dimension finale d’un pixel. Dans un flux matriciel, vous pouvez arrondir un bord vers le bas et attribuer le pixel restant au bord opposé ; un rendu vectoriel ou Web accepte souvent la fraction. Le calcul suppose un ajustement contain centré : il conserve toute la source, ne recadre pas et répartit les marges à égalité. Il ne tient pas compte des pixels anamorphiques, de la rotation, de l’overscan ni des zones de sécurité ; convertissez-les d’abord en rapport d’affichage effectif. L’automatisation par API coûte $0.002 par requête.
Cas d’usage
Préparer une vidéo cinéma pour un cadre standard
Calculez des marges supérieure et inférieure égales avant d’insérer une source large dans un canevas de livraison 16:9.
Créer un master d’archive avec bandes latérales
Déterminez la largeur des bandes gauche et droite afin de préserver une ancienne vidéo 4:3 dans un cadre panoramique moderne.
Placer des éléments hors de l’image active
Réservez des bandes de dimensions connues aux sous-titres, libellés ou commandes sans masquer la source ajustée.
Questions fréquentes
Que se passe-t-il si les deux rapports d’aspect sont égaux ?
Le résultat utilise l’orientation none et renvoie zéro pour chaque dimension, puisqu’aucune bande n’est nécessaire.
bar_size_pixels désigne-t-il une bande ou les deux ?
Il désigne une seule bande. Les bandes opposées sont identiques et les champs de bord indiquent chacune séparément.
Pourquoi le résultat peut-il contenir une fraction de pixel ?
La géométrie des formats ne produit pas toujours des pixels entiers. La valeur précise est conservée afin que votre moteur choisisse son arrondi.
Ce calcul recadre-t-il ou étire-t-il la source ?
Non. Il applique un ajustement contain centré qui préserve toute la source et ses proportions d’affichage.
Combien coûte un calcul par API ?
Chaque requête API coûte $0.002. Le calcul est déterministe et aucun fichier vidéo n’est envoyé ni analysé.
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/video2/aspect-ratio-letterbox-bars-size \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"source_aspect_ratio":"21:9","target_aspect_ratio":"16:9","canvas_height":1080}'const res = await fetch("https://api.kit.forhosting.com/video2/aspect-ratio-letterbox-bars-size", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"source_aspect_ratio": "21:9",
"target_aspect_ratio": "16:9",
"canvas_height": 1080
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/video2/aspect-ratio-letterbox-bars-size",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"source_aspect_ratio": "21:9",
"target_aspect_ratio": "16:9",
"canvas_height": 1080
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/video2/aspect-ratio-letterbox-bars-size", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"source_aspect_ratio":"21:9","target_aspect_ratio":"16:9","canvas_height":1080}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"source_aspect_ratio":"21:9","target_aspect_ratio":"16:9","canvas_height":1080}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/video2/aspect-ratio-letterbox-bars-size", 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
{
"source_aspect_ratio": "21:9",
"target_aspect_ratio": "16:9",
"canvas_height": 1080
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "video2.aspect_ratio_letterbox_bars_size",
"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. |