Créez une échelle de débits adaptatifs selon la résolution
Une échelle de streaming adaptatif fournit au lecteur plusieurs versions d’une même vidéo afin de réagir aux variations de bande passante et d’écran.
Lancer gratuitement
Cette capacité convertit la largeur et la hauteur de la source en un ensemble déterministe de rendus 1080p, 720p, 480p et 360p compatibles avec celle-ci. Elle préserve le format et l’orientation, produit des dimensions paires adaptées à l’encodeur et ajuste les débits standards au nombre réel de pixels de chaque sortie. Le résultat constitue une base directement exploitable pour planifier un encodage HLS ou DASH.
Partez des dimensions réelles de la source
Indiquez la largeur et la hauteur en pixels de la vidéo stockée, avant toute rotation d’affichage ou mise à l’échelle par le lecteur. Le calculateur compare les côtés court et long de la source aux enveloppes courantes des rendus 1080p, 720p, 480p et 360p. Il n’invente jamais de pixels : un palier n’est retenu que si la source est assez grande dans les deux directions pour le profil standard concerné. Une source de 1920 par 1080 reçoit donc les quatre paliers, tandis qu’une source de 1280 par 720 commence à 720p. Le contenu en portrait suit la même règle et conserve son orientation, afin de produire des sorties verticales plutôt que des images forcées en paysage. Les deux dimensions doivent être des entiers positifs conformes à la limite déclarée. Une source inférieure à l’enveloppe paysage de 640 par 360, ou à son équivalent portrait de 360 par 640, ne peut fournir le palier minimal sans agrandissement et est refusée. Vérifiez les vidéos de téléphone pivotées et fournissez les dimensions d’affichage effectives si les métadonnées modifient l’axe horizontal.
Comprenez le calcul des dimensions et des débits
Pour chaque profil admissible, le côté court de la source est ramené à la valeur du palier et le côté long est calculé selon le format d’origine. Ce côté calculé est arrondi à l’entier pair inférieur, car les chaînes H.264 et H.265 usuelles attendent des dimensions qui s’intègrent correctement aux blocs de chrominance. La variation du format exact reste infime, mais cette règle évite un recadrage ou un remplissage implicite dans l’encodeur. Chaque profil part d’une cible AVC classique : 5,000 kbps en 1080p, 2,800 kbps en 720p, 1,400 kbps en 480p et 800 kbps en 360p. L’algorithme adapte ensuite cette cible au nombre de pixels de sortie par rapport à l’image 16:9 de référence, puis arrondit aux 50 kbps les plus proches. Il fournit aussi un débit maximal égal à 107 pour cent de la cible et un tampon égal au double. Ces valeurs facilitent la planification, mais ne garantissent pas la qualité visuelle.
Employez l’échelle comme base d’encodage
Associez chaque palier renvoyé à une sortie de l’encodeur, puis regroupez les flux dans la même liste principale HLS ou présentation DASH. Conservez une fréquence d’image, une cadence d’images clés, une gestion des couleurs, une disposition audio et des limites de segment cohérentes afin que le lecteur puisse changer de rendu proprement. Les débits sont prévisibles et adaptés aux estimations, modèles et premières configurations, mais la complexité du contenu reste déterminante. Animation, grain argentique, sport, capture d’écran et bruit en faible lumière peuvent demander des débits très différents à résolution identique. Validez des scènes représentatives avec une mesure objective et des essais de lecture, puis ajustez chaque cible selon le codec, la cadence ou la qualité recherchée. La sortie ne couvre que la vidéo : budgétez l’audio séparément et prévoyez une marge de diffusion au-dessus du total. En production, surveillez les remises en mémoire tampon, le démarrage, le choix du rendu et la qualité, car le comportement réel du réseau révèle l’équilibre de l’échelle.
Cas d’usage
Préparer un plan d’encodage HLS
Transformez les dimensions source en tailles de rendu et en cibles de débit cohérentes avant de produire une liste principale.
Estimer les sorties de transcodage
Déterminez combien de rendus standards la source accepte et la bande passante approximative de chaque sortie.
Normaliser les formats verticaux ou atypiques
Préservez l’orientation source tout en adaptant les profils courants au nombre réel de pixels d’une vidéo hors 16:9.
Questions fréquentes
Quel est le coût du calcul ?
Chaque requête API coûte $0.002.
L’échelle agrandit-elle les petites sources ?
Non. Tout palier dépassant une dimension normalisée est omis, et une source sous l’enveloppe 360p déclenche une erreur.
Les débits indiqués couvrent-ils la vidéo ou toute la bande passante ?
Ce sont des cibles vidéo. Ajoutez le débit audio choisi et les frais de diffusion pour estimer la bande passante totale.
La vidéo en portrait est-elle prise en charge ?
Oui. L’orientation verticale est conservée et chaque palier standard respecte le format source avec des dimensions paires.
Pourquoi la largeur diffère-t-elle parfois de 1920 ou 1280 ?
Ces largeurs supposent une vidéo 16:9. Un autre format exige une largeur différente pour préserver l’image sans la recadrer.
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/streaming-bitrate-ladder \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"source_width":1920,"source_height":1080}'const res = await fetch("https://api.kit.forhosting.com/video2/streaming-bitrate-ladder", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"source_width": 1920,
"source_height": 1080
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/video2/streaming-bitrate-ladder",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"source_width": 1920,
"source_height": 1080
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/video2/streaming-bitrate-ladder", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"source_width":1920,"source_height":1080}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"source_width":1920,"source_height":1080}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/video2/streaming-bitrate-ladder", 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_width": 1920,
"source_height": 1080
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "video2.streaming_bitrate_ladder",
"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. |